【问题标题】:Jsoup Politeness policy + DNS resolverJsoup 礼貌策略 + DNS 解析器
【发布时间】:2017-05-15 18:53:03
【问题描述】:

我正在用 java 实现一个搜索引擎,我正在使用 Jsoup API 来制作爬虫组件,还有两件事我还没有完全理解。首先:要获取一个网页,即从维基百科站点我调用 Jsoup.connect() 函数,如下所示

private static final String agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) "
        + "AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1";

Document htmlDocument = Jsoup.connect(url).userAgent(agent).get();

有些爬虫的用户代理在网站上被阻止,因为它是在 robots.txt 文件中建立的。在这种情况下,如果我将连接请求者的用户代理定义为 Web 浏览器,则该站点允许访问其任何页面。我想知道这是怎么可能的;假设Jsoup 获取robots.txt 文件并在内部根据其中的规则抓取网站,这真的实现了吗?如果是这样,那又如何?背后的逻辑是什么?

第二件事是 DNS 解析器。我已经在这个主题java - Use IP and host with Jsoup 中查看了当系统属性sun.net.http.allowRestrictedHeaders 设置为true 时,我了解到它允许Jsoup 将GET 请求的标头更改为使用IP 而不是URL。这是正确的还是逻辑是别的?就像我的第一个问题一样,内部发生了什么?

如果有人能至少回答其中一个问题,我将不胜感激。同时,我将研究 github 中的 Jsoup 代码,看看我是否让某些事情通过。

【问题讨论】:

    标签: java dns jsoup information-retrieval


    【解决方案1】:

    为什么不使用像 StormCrawlerApache Nutch 这样的适当爬虫。他们遵循 robots.txt,强制执行礼貌等... StormCrawler 使用 JSoup 来解析 HTML 文档。

    【讨论】:

    • 其实这些爬虫我都不认识……我想找个东西来帮我爬网,Jsoup 是我发现的第一个。而且我也知道有几种更好的方法可以做到这一点,例如不使用 java,但由于时间不足,我无法学习一门新语言来做到这一点。但我会试着看看他们。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 2013-12-11
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2018-03-24
    相关资源
    最近更新 更多