使用crawler4j下载js文件

时间:2013-01-19 11:43:15

标签: java web-crawler crawler4j

我正在尝试使用crawler4j下载某些网站。我唯一的问题是即使我对.js函数中的所有shouldVisit文件都返回true,它们也永远不会被下载。

@Override
public boolean shouldVisit(WebURL url) {
    return true;
}

@Override
public void visit(Page page) {
    String url = page.getWebURL().getURL();
    System.out.println("URL: " + url);
}

.js文件的网址永远不会被打印出来。

2 个答案:

答案 0 :(得分:1)

查看来源,原因可以在HTMLContentHandler class

中找到

此类负责从下载的网页中提取链接。 脚本标记永远不会被处理。

如果你想下载.js文件,我建议你克隆项目,扩展这个类,这很简单。您还需要修改调用HTMLContentHandler的WebCrawler。

答案 1 :(得分:1)

我注意到“< script>” crawler4j无法处理标记。这是所有“.js”文件发生的地方。所以我不认为问题只限于“.js”文件 - 我认为这是“< script>”中的任何内容标签(通常恰好是“.js”文件)。

它最初看起来像修改HtmlContentHandler的Enumeration和startElement()方法将解决问题。我试过了,但没用。在调试时,我观察到Tika Parser或TagSoup(Tika使用的)没有拿起脚本标签。因此,它甚至从未到达crawler4j进行处理。

作为一种解决方法,我使用JSoup解析所有“< script>”的HTML我的visit()方法中的标签,然后我计划对这些文件进行爬网。

我认为真正的解决方案是确定为什么Tika(或TagSoup)没有拿起脚本标签。它可能是crawler4j调用它的方式。一旦解决了,那么修改HtmlContentHandler就行了。