Java开源爬虫框架crawler4j (3)

Multiple crawlers:这是一个示例,显示了两个不同的抓取工具如何同时运行。 例如,您可能希望将抓取划分到不同的域中,然后为每个组采用不同的抓取策略。 每个抓取控制器可以有自己的配置。

Shutdown crawling:
这个例子显示通过向控制器发送’shutdown’命令可以正常终止爬行。

Postgres/JDBC integration: 这个实例展示了了如何将抓取的内容保存到Postgres数据库(或任何其他JDBC存储库)中。

配置详情

控制器类具有类型为CrawlConfig的必需参数
这个类的实例可以用来配置crawler4j。以下部分描述配置的一些细节。

爬取深度

默认情况下,爬取深度没有限制。 但是你可以限制爬取的深度。 例如,假设你有一个种子页面“A”,链接到“B”,链接到“C”,链接到“D”。 所以,我们有以下链接结构:
A -> B -> C -> D

因为“A”是一个种子页面,它的深度为0.“B”的深度为1,依此类推。 您可以设置crawler4j抓取的网页的深度限制。 例如,如果将此限制设置为2,则不会抓取页面“D”。 要设置您可以使用的最大深度:

crawlConfig.setMaxDepthOfCrawling(maxDepthOfCrawling); 启用SSL

简单地启用SSL:

CrawlConfig config = new CrawlConfig(); config.setIncludeHttpsPages(true); 要抓取的最大页数

虽然默认情况下,要抓取的页面数量没有限制,但您可以对此设置一个限制:

crawlConfig.setMaxPagesToFetch(maxPagesToFetch); 启用二进制内容爬取

默认情况下,抓取二进制内容(即图像,音频等)被关闭。要启用才能抓取这些文件:

crawlConfig.setIncludeBinaryContentInCrawling(true);

看一个例子 here 来获取更多细节。

文明性问题(礼貌的爬取)

crawler4j的设计非常高效,能够非常快地抓取域名
(例如,它已经能够每秒抓取200个维基百科页面)。 不过现在是反对爬取网站的,因为这样在服务器上给他们承受巨大的负载(他们可能会阻止你!),
从版本1.3开始,默认情况下,crawler4j会在请求之间等待至少200毫秒。
不过,这个参数可以调整:

crawlConfig.setPolitenessDelay(politenessDelay); 代理

你的爬取应该在代理之后运行吗? 如果是这样,你可以使用:

crawlConfig.setProxyHost("proxyserver.example.com"); crawlConfig.setProxyPort(8080);

如果你的代理也需要认证:

crawlConfig.setProxyUsername(username); crawlConfig.setProxyPassword(password); 可恢复的爬取

有时您需要长时间运行爬虫。 搜索器可能意外终止。 在这种情况下,可能需要恢复抓取。您可以使用以下设置恢复以前停止/崩溃的抓取:

crawlConfig.setResumableCrawling(true);

但是,您应该注意,它可能会使爬行速度稍慢。

User agent string

用户代理字符串用于将您的搜寻器表示为Web服务器。
查看 here获取更过详细内容.默认情况下,crawler4j使用以下用户代理字符串:

"crawler4j (https://github.com/yasserg/crawler4j/)"

但是,您可以覆盖它:

crawlConfig.setUserAgentString(userAgentString); License

Copyright (c) 2010-2017 Yasser Ganjisaffar

Published under Apache License 2.0, see LICENSE

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwggpg.html