笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

常用做法

发布者: 笨鸟自学网



分布式爬行

Scrapy不提供任何以分布式(多服务器)方式运行爬虫的内置工具。但是,有一些分发爬行的方法,这取决于您计划如何分发爬行。

如果您有许多蜘蛛,那么分配负载的最明显的方法就是设置许多ScrapyD实例,并将蜘蛛运行分布在这些实例中。

如果您想在多台机器上运行一个(大)蜘蛛,通常需要对URL进行分区,以便爬行并将它们发送到每个单独的蜘蛛。下面是一个具体的例子:

首先,准备要爬网的URL列表并将其放入单独的文件/URL::

http://somedomain.com/urls-to-crawl/spider1/part1.list
http://somedomain.com/urls-to-crawl/spider1/part2.list
http://somedomain.com/urls-to-crawl/spider1/part3.list

然后在3个不同的ScrapyD服务器上启动一个蜘蛛运行。蜘蛛会收到一个(蜘蛛)论点 part 使用要爬网的分区的编号::

curl http://scrapy1.mycompany.com:6800/schedule.json -d project=myproject -d spider=spider1 -d part=1
curl http://scrapy2.mycompany.com:6800/schedule.json -d project=myproject -d spider=spider1 -d part=2
curl http://scrapy3.mycompany.com:6800/schedule.json -d project=myproject -d spider=spider1 -d part=3

避免被禁止

一些网站实施了某些措施,以防止僵尸爬行他们,不同程度的复杂度。绕开这些措施既困难又棘手,有时可能需要特殊的基础设施。请考虑联系 commercial support 如果有疑问。

以下是处理此类网站时要记住的一些提示:

  • 将你的用户代理从浏览器中的一个著名的池中轮换出来(用google搜索以获得一个列表)。

  • 禁用cookies(请参见 COOKIES_ENABLED )因为有些网站可能会使用cookie来发现机器人行为

  • 使用下载延迟(2或更高)。见 DOWNLOAD_DELAY 设置。

  • 如果可能,使用 Google cache 获取页面,而不是直接访问站点

  • 使用一个旋转的IP池。例如,自由 Tor project 或者像这样的付费服务 ProxyMesh . 开源替代方案是 scrapoxy ,可以将自己的代理附加到的超级代理。

  • 使用在内部规避禁令的高度分布式的下载器,这样您就可以专注于解析干净的页面。这种下载器的一个示例是 Zyte Smart Proxy Manager

123
上一篇:蜘蛛合约下一篇:宽爬行

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-9-8 10:01 , Processed in 0.229918 second(s), 33 queries .

© 2001-2020

返回顶部