我正在使用crawler4j为Tripadvisor编写一个爬虫。我需要收集一个项目的所有评论,但指向"下一个"评论(带有数字的评论)的链接不是链接,而是 javascript 函数。此功能在 Tripadvisor 服务器的某个位置定义。有没有办法评估这些函数并获取它们返回的页面?
你试过 eval 吗?如果需要更改调用方上下文,请调用。
eval 将字符串作为输入并尝试执行它。
您可以使用 HTMLUnit 获取页面内容。这个库可以用来运行所有的javascript代码,然后获取要操作的页面代码。
下面是一个示例代码,取自有关stackoverflow的问题。
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();