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.setProxyHost("proxyserver.example.com"); crawlConfig.setProxyPort(8080);如果你的代理也需要认证:
crawlConfig.setProxyUsername(username); crawlConfig.setProxyPassword(password); 可恢复的爬取有时您需要长时间运行爬虫。 搜索器可能意外终止。 在这种情况下,可能需要恢复抓取。您可以使用以下设置恢复以前停止/崩溃的抓取:
crawlConfig.setResumableCrawling(true);但是,您应该注意,它可能会使爬行速度稍慢。
User agent string用户代理字符串用于将您的搜寻器表示为Web服务器。
查看 here获取更过详细内容.默认情况下,crawler4j使用以下用户代理字符串:
但是,您可以覆盖它:
crawlConfig.setUserAgentString(userAgentString); LicenseCopyright (c) 2010-2017 Yasser Ganjisaffar
Published under Apache License 2.0, see LICENSE