【问题标题】:Use crawler4j to download js files使用 crawler4j 下载 js 文件
【发布时间】:2013-01-19 11:43:14
【问题描述】:

我正在尝试使用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 永远不会被打印出来。

【问题讨论】:

    标签: java web-crawler crawler4j


    【解决方案1】:

    我注意到 crawler4j 不处理“

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

    作为一种解决方法,我使用 JSoup 在我的 visit() 方法中解析所有“

    我认为真正的解决方案是确定为什么 Tika(或 TagSoup)没有拾取脚本标签。这可能是 crawler4j 调用它的方式。一旦解决了这个问题,修改 HtmlContentHandler 就可以了。

    【讨论】:

    • @JulienS 发布答案时,我使用完全相同的方法提取 .js 文件。 (使用JSoup)。但是,我认为修改源代码可能会有所帮助。我可以分享代码,但它太简单了。
    【解决方案2】:

    看源码,原因在HTMLContentHandler class.

    这个类负责从下载的网页中提取链接。 script 标签永远不会被处理。

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

    【讨论】:

    • 好问题,这是一个重要的隐藏实现决策。我认为这应该留给开发人员可选。
    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多