java - Jsoup 礼貌策略 + DNS 解析器

标签 java dns jsoup information-retrieval

我正在用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 请求的 header 以使用 IP 而不是 URL。这是正确的还是逻辑是别的?就像我的第一个问题一样,内部发生了什么?

如果有人能至少回答其中一个问题,我将非常感激。同时,我将研究 github 中的 Jsoup 代码,看看是否允许某些内容通过。

最佳答案

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

关于java - Jsoup 礼貌策略 + DNS 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43805019/

相关文章:

java - 将旧的 zookeeper znode/data 复制/迁移到新的 zookeeper

bash - RTNETLINK 回答 : Device or resource busy

javascript - Android WebView 未返回所需的 HTML

java - Selenium PhantomJS Java - 拒绝评估字符串,因为不允许使用 'unsafe-eval'

java - 每秒多次调用许多对象的许多方法

java - 告诉我一个可以让你的日常 Java 编程变得更加愉快的库

java - 如何对从 WSDL 生成的类使用 JAXB 自动继承?

c - 非阻塞网络地址解析(gethostbyname 或 getaddrinfo)?

.NET 在 Server 2008 中永久缓存 DNS

java - 递归函数不起作用