【发布时间】: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