首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改进Crawler4j-Crawler效率

改进Crawler4j-Crawler效率
EN

Stack Overflow用户
提问于 2014-09-29 07:26:31
回答 1查看 2.1K关注 0票数 1

我正在使用Crawler4j爬虫来爬行一些domains.Now,我想提高爬虫的效率,我希望我的爬虫能使用我的全部带宽,并且在给定的时间内尽可能多的爬行period.For,我正在采取以下设置:-

  • 我增加了号码。(使用此函数ContentCrawler('classfilename', 10 );)
  • 我已经将礼貌延迟减少到50 ms (使用Crawlconfig.setpolitenessdelay(50);)
  • 我给爬行深度作为2(使用Crawlconfig.setMaxDepthOfCrawling(2))

现在我想知道的是:-

( 1)这种设置有什么副作用吗?

( 2)除了这个之外,我还有什么事情要做,这样我才能提高我的爬行速度。

( 3)有人能告诉我每一种设置的最大限度(例如:- Max no.crawler4j支持的线程,等等).Beacuse,我已经通过了Crawler4j代码,但是我没有在任何地方找到任何限制。

4)如何在不检查robots.txt file.Beacause的情况下爬行域--我知道crawler4j在爬行之前首先检查域的robots.txt文件,我不想那样!!

5)页面获取器是如何工作的(请简要解释一下)

任何帮助都是感激的,如果这个问题很愚蠢的话,请给我简单的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 11:23:47

我会尽我所能帮助你的。我不能保证正确性,也不能保证完全性。

  1. ( b)减少礼貌延迟会给站点带来更多的爬行负荷,并且可以(在小型服务器上)长期增加接收时间。但这不是一个常见的问题,所以50毫秒应该仍然是好的。还要注意的是,如果需要250 be才能收到来自the服务器的响应,那么下一页仍然需要250 be才能被这个线程爬行。 c)我不太确定您希望将crawlDepth设置为2值来实现什么。从1开始的爬行深度意味着你要爬种子,而不是爬种子上的每一个站点,而不是你停下来。(crawlDepth =2只会更进一步,以此类推)。这不会影响你的爬行速度,只是你的爬行时间和找到的网页。
  2. 不要在CrawlerThread及其涵盖的所有方法/类中实现时间繁重的操作。在最后或在一个额外的线程中完成它们。
  3. 爬虫配置本身没有限制。限制将由您的CPU(不太可能)或网站的结构来爬行(很可能)。
  4. 将这一行添加到您的CrawlController:robotstxtConfig.setEnabled(false);

现在应该是这样的:

代码语言:javascript
复制
PageFetcher pageFetcher = new PageFetcher(config);
RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
robotstxtConfig.setEnabled(false);
RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);
  1. 页面获取器将设置一些参数,然后使用前面的设置参数向给定url上的webservice发送一个HTTPget请求。将评估来自and服务器的响应,并保存一些信息,如响应头和二进制格式的html代码。

希望我能帮你点忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26094576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档