我正在尝试使用 crawler4j下载一些网站。我遇到的唯一问题是,即使我在 shouldVisit
函数中为所有 .js
文件返回 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
文件的 URL 永远不会被打印出来。
最佳答案
我注意到“<script>”标签不会被crawler4j处理。这是所有“.js”文件发生的地方。所以我不认为问题仅限于“.js”文件 - 我认为它是“<script>”标签内的任何内容(通常恰好是“.js”文件)。
最初看起来修改 HtmlContentHandler 的 Enumeration 和 startElement() 方法确实可以解决问题。我尝试过,但没有成功。在调试它时,我观察到 Tika 解析器或 TagSoup(Tika 使用的)没有获取脚本标签。因此,它甚至从未到达crawler4j 进行处理。
作为解决方法,我使用 JSoup 解析访问()方法中所有“<script>”标记的 HTML,然后安排对这些文件进行爬网。
我认为真正的解决方案是确定为什么 Tika(或 TagSoup)没有获取脚本标签。这可能是crawler4j 调用它的方式。一旦解决了这个问题,修改 HtmlContentHandler 就可以了。
关于java - 使用crawler4j下载js文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413965/