我正在使用crawler4j为Tripadvisor编写一个爬虫。我需要收集一个项目的所有评论,但是指向“下一个”评论的链接(那些带有数字的评论)不是一个链接,而是一个javascript函数。这个函数是在Tripadvisor的服务器中定义的。有没有办法评估这些函数并获得它们返回的页面?
发布于 2012-06-27 18:51:49
你试过eval吗?如果需要更改调用者上下文,则为call。
eval接受一个字符串作为输入并尝试执行它。
发布于 2013-02-07 21:09:24
您可以使用HTMLUnit来获取页面内容。这个库可以用来运行所有的javascript代码,然后获得页面代码进行操作。
下面是一个code示例,取自一个关于堆栈溢出的问题。
HtmlElement element4 = null;
Iterable<HtmlElement> iterable5 = page.getAllHtmlChildElements();
Iterator<HtmlElement> i6 = iterable5.iterator();
while(i6.hasNext() {
HtmlElement anElement = i6.next();
if(anElement instanceof HtmlImage) {
HtmlImage input = (HtmlImage) anElement;
String[] elements = "http://example.com/pages/powerbutton.png".split( "/" );
if(input.getSrcAttribute().indexOf(elements[elements.length-1] )> -1 ){
element4 = input;
break;
}
}
}
HtmlPage page = element4.click();
https://stackoverflow.com/questions/11224441
复制相似问题