Python 刮毛机的最佳性能

Python 刮毛机的最佳性能,python,web-scraping,scrapy,scrapy-spider,Python,Web Scraping,Scrapy,Scrapy Spider,我在我的专用服务器上使用Scrapy,我想知道如何为我的爬虫程序获得最佳性能 以下是我的自定义设置: custom_settings = { 'RETRY_ENABLED': True, 'DEPTH_LIMIT' : 0, 'DEPTH_PRIORITY' : 1, 'LOG_ENABLED' : False, 'CONCURRENT_REQUESTS_PER_DOMAIN' : 32, 'CONCURRENT_REQUESTS' : 64, }

我在我的专用服务器上使用Scrapy,我想知道如何为我的爬虫程序获得最佳性能

以下是我的自定义设置:

custom_settings = {
    'RETRY_ENABLED': True,
    'DEPTH_LIMIT' : 0,
    'DEPTH_PRIORITY' : 1,
    'LOG_ENABLED' : False,
    'CONCURRENT_REQUESTS_PER_DOMAIN' : 32,
    'CONCURRENT_REQUESTS' : 64,
}
我实际上爬了200个链接/分钟

服务器:

32 Go RAM : DDR4 ECC 2133 MHz
CPU : 4c/8t : 2,2 / 2,6 GHz
1) 使用
Scrapyd
运行spider

2) 在scrapy中用于过滤访问过的url的默认重复筛选器使用url指纹列表–基本上是长度为40个字符的sha1哈希,在Python 2.7中为77字节长。假设你必须抓取一个有2M页面的站点,那么你的重复过滤列表可能会增长到2M*77b=154Mb/个爬虫。为了能够同时刮取300个这样的域,您需要300*154Mb=42G的内存。幸运的是还有另一种方法–布卢姆过滤器

3) 在生产中,我使用Scrapyd和Scrapy Spider在分布式环境中运行

4) 嗯,我建议使用更小的商品机器来运行Spider,而不是使用大型机器

5) 分布式-我没有亲自使用它

6) 使用Scrapy调试查找内存管理(日志:2015-07-20 20:32:11-0400[Scrapy]调试:Telnet控制台侦听127.0.0.1:6023)

实时参考

# scrapy class                 Memory   Time ago
HtmlResponse                        3   oldest:   5s ago
CraigslistItem                    100   oldest:   5s ago
DmozItem                            1   oldest:   0s ago
DmozSpider                          1   oldest:   6s ago
CraigslistSpider                    1   oldest:   5s ago
Request                          3000   oldest: 705s ago
Selector                           14   oldest:   5s ago

你每秒爬行3页。除非页面的响应时间非常长,否则如果
每个域的并发请求数=32,那么响应时间就太低了。Bloom过滤器似乎是您将来可能遇到的问题。现在,您需要7天的时间来抓取200万页(并使用154Mb内存)。

谢谢您的回答,我已经在服务器上使用了scrapyd!好的@像素和布卢姆过滤器?还没有,我将添加过滤器。谢谢s@Pixel,我想说的一件事是,将爬行器的功能仅限于抓取数据。稍后,您可以使用另一种机制来执行其余的操作(FTP、SQL、ES)
# scrapy class                 Memory   Time ago
HtmlResponse                        3   oldest:   5s ago
CraigslistItem                    100   oldest:   5s ago
DmozItem                            1   oldest:   0s ago
DmozSpider                          1   oldest:   6s ago
CraigslistSpider                    1   oldest:   5s ago
Request                          3000   oldest: 705s ago
Selector                           14   oldest:   5s ago