2013-07-28 4 views
4

Google에서 책 장르 정보를 다 써 버리려고합니다.CasperJS로 긁어 모으기 : 자바 스크립트를 사용하지 않고 페이지가로드되는 것 같습니다.

계산/변환을 Google에 넣으면 검색 결과 위의 상자에 결과가 표시됩니다. 브라우저 (콘솔)에서이 상자 내의 데이터를 아주 쉽게 긁을 수 있지만 casper 내에서 동일한 코드를 시도하면 내용 상자가 코드의 아무 곳에 나 나타나지 않습니다. JS를 끄면 브라우저에서이를 복제 할 수있는 유일한 방법이 있습니다.

다른 형식이 CasperJS와 내 브라우저에 왜 표시되는지 모르겠지만 동일한 형식이되도록하는 방법이 있습니까? 여기에 내가 사용하고있는 현재의 코드는 여기서 실행

링크 = https://www.google.com/webhp?hl=en&tab=ww#safe=off&hl=en&output=search&sclient=psy-ab&q=The+Love+Affairs+of+a+Bibliomaniac+book+genre&oq=The+Love+Affairs+of+a+Bibliomaniac+book+genre

casper.start(); 
casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36  (KHTML, like Gecko) '); 
casper.thenOpen(links, function() { 

casper.waitForSelector('.answer_predicate', function() { 
this.echo(this.getHTML('.answer_predicate')); 

}); 



}); 
casper.run(); 
} 
+0

캐스퍼를 사용하지 않았거나 코드를 살펴 본 적이 없으므로 this.echo (this.getHTML ('answer_predicate'));가'this.echo (this.getHTML ('. answer_predicate')) 여야합니다. ; 'answer_predicate 전에 점을 잊어 버렸습니다 – PAEz

+0

@PAEz 미안하지만 오타였습니다. casper.waitForSelector는 코드가 실행될 때까지 시간이 초과되고 CasperJS가로드하는 페이지는 브라우저에있는 페이지와 다릅니다. .answer_predicate는 위의 링크를 브라우저에서 확인할 때 위 링크에 있지만 CasperJS를 통해 동일한 URL이 열리지 않은 경우에는 없습니다. –

+0

답변을 찾았습니까? 나는 그것을 잘 보았다. 그리고 나는 couldnt한다 그것을 어느 쪽이라도 이해한다. 당신의 새로운 것을 알아 차 렸습니다. 그리고 어떤 대표도 가지지 마라. 나 자신에게 관심이있다. 내가 그것에 현상금을 부탁 할까? 그게 도움이 될지도 몰라. – PAEz

답변

4

다음

<span class="kno-a-v">Fiction</span> 
Fiction 

내 가정은 다음과 같습니다

var casper = require('casper').create({ 
    pageSettings: { 
    loadImages: false, 
    loadPlugins: false, 
    userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1588.0 Safari/537.36' 
    } 
}); 

links = 'https://www.google.com/webhp?hl=en&tab=ww#safe=off&hl=en&output=search&sclient=psy-ab&q=The+Love+Affairs+of+a+Bibliomaniac+book+genre&oq=The+Love+Affairs+of+a+Bibliomaniac+book+genre' 

casper.start(); 

casper.thenOpen(links, function() { 
    this.waitForSelector('.answer_predicate', function() { 
    this.echo(this.getHTML('.answer_predicate')); 
    this.echo(this.getElementInfo('.answer_predicate').text); 
    }); 
}); 

casper.run(); 

날이 출력을 제공합니다 여기에있는 문제는 게시 된 here과 같은 문제입니다.

+0

나에게 도움이되지 못했지만, @ Khaled Shaaban에서 효과가 있다면 그는 당신에게 증표를 준다. – PAEz

+0

@PAEz 어떤 CasperJS/PhantomJS 버전을 실행하고 있습니까? 나는 각각 1.1-beta1/1.9.1을 가지고있다. – hexid

0

@PAEz :이 스크립트를 사용해보십시오. 생성 된 hexid와 매우 유사하지만 phantomjs 전용 (casperjs 없음)으로 완료되었습니다.

Btw, hexid가 먼저 대답하고 나도 꽤 비슷한 것을하고 있기 때문에, 그는 그 현상금을받을 자격이 있다고 생각합니다.

var page = require('webpage').create(); 
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36'; 
page.open('https://www.google.com/webhp?hl=en&tab=ww#bav=on.2,or.r_qf.&cad=b&fp=c210d6fe329544e7&hl=en&q=The+Love+Affairs+of+a+Bibliomaniac+book+genre&safe=off', function() { 
    window.setTimeout(function() { 
     var genre = page.evaluate(function() { 
      return document.getElementsByClassName('answer_predicate')[0].textContent; 
     }); 
     console.log(genre); 
    }, 3000); 
}); 

저는 phantomjs 1.9.1 btw를 사용하고 있습니다.

관련 문제