Scrapy 如何加速刮痧

Scrapy 如何加速刮痧,scrapy,Scrapy,我需要收集大量数据进行统计,所有必要的信息都在 我在它下面编写了scrapy解析器(html中的脚本),但解析速度非常慢(大约每秒3页)。有没有办法加快这个过程?理想情况下,我希望看到10+页每秒 #spider.py: import scrapy import json class Spider(scrapy.Spider): name = 'scrape' start_urls = [ about 10000 urls

我需要收集大量数据进行统计,所有必要的信息都在
我在它下面编写了scrapy解析器(html中的脚本),但解析速度非常慢(大约每秒3页)。有没有办法加快这个过程?理想情况下,我希望看到10+页每秒

#spider.py:

import scrapy
import json

class Spider(scrapy.Spider):
    name = 'scrape'
    start_urls = [
                 about 10000 urls
                 ]

    def parse(self, response):
        data = json.loads(response.css('script[type="application/ld+json"]::text').extract_first())
        name = data['name']
        image = data['image']
        path = response.css('span[itemprop="name"]::text').extract()
        yield {
            'name': name,
            'image': image,
            'path': path
        }
        return
#settings.py:

USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0"
ROBOTSTXT_OBEY = False

CONCURRENT_REQUESTS = 32

DOWNLOAD_DELAY = 0.33
DEFAULT_REQUEST_HEADERS = {
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
   'Accept-Language': 'en',
}
EXTENSIONS = {
  'scrapy.extensions.telnet.TelnetConsole': None,
}
AUTOTHROTTLE_DEBUG = False
LOG_ENABLED = False
我的电脑规格:

16GB ram、i5 2400、ssd、1gb以太网


#已编辑的设置.py

ROBOTSTXT\u obe=False
下载延迟=0
下载\u超时=30
随机化\u下载\u延迟=真
反应器\u线程池\u最大大小=128
并发请求=256
每个\u域的并发\u请求\u=256
每个IP的并发请求数=256
自动油门启用=真
自动油门启动延迟=1
自动油门最大延迟=0.25
自动锁定\u目标\u并发性=128
自动跟踪调试=真
重试\u已启用=真
重试次数=3次
重试\u HTTP\u代码=[5005025035004040404040405406 407 408 409 410429]
下载程序\u中间件={
'scrapy.downloaderMiddleware.useragent.UserAgentMiddleware':无,
“scrapy.SpiderMiddleware.referer.RefererMiddleware”:80,
“scrapy.DownloaderMiddleware.retry.RetryMiddleware”:90,
“scrapy\u fake\u useragent.middleware.RandomUserAgentMiddleware”:120,
“scrapy.DownloaderMiddleware.cookies.cookies”:130,
'scrapy.downloadermiddleware.httpcompression.HttpCompressionMiddleware':810,
'scrapy.downloadermiddleware.redirect.RedirectMiddleware':900,
“scraper.middleware.ScraperDownloaderMiddleware”:1000
}

设置.py

ROBOTSTXT\u obe=False
下载延迟=0
下载\u超时=30
随机化\u下载\u延迟=真
反应器\u线程池\u最大大小=128
并发请求=256
每个\u域的并发\u请求\u=256
每个IP的并发请求数=256
自动油门启用=真
自动油门启动延迟=1
自动油门最大延迟=0.25
自动锁定\u目标\u并发性=128
自动跟踪调试=真
重试\u已启用=真
重试次数=3次
重试\u HTTP\u代码=[5005025035004040404040405406 407 408 409 410429]
下载程序\u中间件={
'scrapy.downloaderMiddleware.useragent.UserAgentMiddleware':无,
“scrapy.SpiderMiddleware.referer.RefererMiddleware”:80,
“scrapy.DownloaderMiddleware.retry.RetryMiddleware”:90,
“scrapy\u fake\u useragent.middleware.RandomUserAgentMiddleware”:120,
“scrapy.DownloaderMiddleware.cookies.cookies”:130,
'scrapy.downloadermiddleware.httpcompression.HttpCompressionMiddleware':810,
'scrapy.downloadermiddleware.redirect.RedirectMiddleware':900,
“scraper.middleware.ScraperDownloaderMiddleware”:1000
}


您是否正在使用此爬虫的Splash?不,只有scrapy。因为在html中我不需要Splash,那么您可以尝试禁用Splash中间件吗?删除
DOWNLOAD\u DELAY
和bump
CONCURRENT\u REQUESTS
CONCURRENT\u REQUESTS\u PER\u DOMAIN
一点。虽然每秒3页已经相当多了。这是每分钟180个请求,你可能会因为超过这一点而被禁止。我从相当大的网站(有些甚至是国际网站)收集统计数据,所以我认为这不会是一个大问题。你在这个爬虫程序上使用Splash吗?不,只是勉强而已。因为在html中我不需要Splash,那么您可以尝试禁用Splash中间件吗?删除
DOWNLOAD\u DELAY
和bump
CONCURRENT\u REQUESTS
CONCURRENT\u REQUESTS\u PER\u DOMAIN
一点。虽然每秒3页已经相当多了。这是每分钟180个请求,你可能会因为超过这一点而被禁止。我从相当大的网站(有些甚至是国际网站)收集统计数据,所以我认为这不会是一个大问题。谢谢你的回答,很抱歉我很久没有回答。我设置了你的代码,下载'scraper'和'scrapy\u fake\u useragent',但是我得到了一个错误
modulenofounderror:没有名为'scraper.middleware'的模块
。你能告诉我什么是“scraper”以及如何解决这个bug吗(在internet上找不到任何关于它的信息=()我尝试在你的设置上运行代码(没有“scraper.middleware.ScraperDownloaderMiddleware”:1000)和50个链接(我想)被禁止,只是得到
调试:重试(失败1/2/3次):用户超时导致连接失败:获取“url”的时间超过30.0秒。
=(尝试增加
DOWNLOAD\u DELAY
到一个最佳值,在做了一些尝试之后。如果延迟成为一个瓶颈,增加并发和自动瓶颈有什么好处?DOWNLOADER中间件也有意义吗?谢谢你的回答,很抱歉我很久没有回答。我设置了你的代码,下载“scraper”和“scrape”你可以告诉我什么是“scraper.middleware”以及如何解决这个bug(在internet上找不到任何关于它的信息=()我试图在你的设置上运行代码(没有“scraper.middleware.ScraperDownloaderMiddleware”):1000)50个链接后来(我想)被禁止了,只需获取
DEBUG:重试(失败1/2/3次):用户超时导致连接失败:获取“url”的时间超过30.0秒。
=(在进行一些试验后,尝试将
DOWNLOAD\u DELAY
增加到最佳值。如果延迟成为瓶颈,增加并发和自动瓶颈有什么好处?DOWNLOADER中间件也有意义吗?