2014-06-20 1 views
1

PDF 다운로드 링크를 대상으로하고 컴퓨터의 올바른 디렉터리로 다운로드하는 가장 좋은 방법을 찾으려고합니다. 나는 그것이 가장 쉬운 방법처럼 보이기 때문에 CasperJS & XPath를 사용하려고합니다.CasperJS 및 XPath를 사용하여 요소의 HREF 값을 얻는 방법

은 현재 내가 무엇을 :

var x = require('casper').selectXPath; 
var fs = require('fs'); 
casper.start('http://www.regulations.gov/#!documentDetail;D=APHIS-2012-0047-0291'); 

var classVal = x("//a[@class='gwt-Anchor']/@href"); 
casper.download(classVal, 'C:/users/bnickerson/desktop/script/result/p.pdf'); 

이 실행 때마다 파일을 다운로드,하지만 html 파일은 단지 p.pdf 이름. 나는 그것을 열면,이 얻을 :

HTTP Status 404 - /%5Bobject%20Object%5D 
type Status report 
message /%5Bobject%20Object%5D 
description The requested resource (/%5Bobject%20Object%5D) is not available. 
JBoss Web/7.0.17.Final 

나는에서이 PDF 다운로드 얻기 위해 노력하고있어 페이지 : 당신은 download 어떤 인자들이 허용되는 가를 자세히 살펴해야 http://www.regulations.gov/#!documentDetail;D=APHIS-2012-0047-0291

답변

2

합니다. 선택기와 일반 문자열을 혼합하지 마십시오. classVal은 XPath 선택 자이고 이 아니며 선택자 뒤에 있습니다. getElementAttribute을 사용하여 요소 속성을 검색 할 수 있습니다.

casper.then(function(){ 
    var classVal = x("//a[@class='gwt-Anchor' and contains(@href,'contentType=pdf')]"); 
    var url = casper.getElementAttribute(classVal, "href"); 
    casper.download(url, 'C:/users/bnickerson/desktop/script/result/p.pdf'); 
}); 
+0

나는 당신의 코드를 사용했으며 여전히 오류가 있습니다. 그것은 실제 href 자체와 관련이 있을지도 모르지만 그 종류의 스트림 인 pdf에 대한 직접 링크가 아닌가? http://www.regulations.gov/contentStreamer?objectId=09000064811113cc&disposition=attachment&contentType=pdf – Prokzy

+0

@Prokzy 선택기가 충분하지 않았습니다. –

관련 문제