我有一个情况,我需要发送20个请求每秒到web服务器与scrapy.我有一个产品列表页面的URL,我传递给蜘蛛在开始到self.start_urls,有这么多的产品URL,我从该列表页面,我需要刮,但它发送请求到所有这些产品URL顺序.我如何才能使它并发?
蜘蛛代码逻辑
class WebSpider(scrapy.Spider):
def __init__(self, country=None, category=None, *args,**kwargs):
self.start_urls.append(url[country][category])
def start_requests(self):
for url in self.start_urls:
request = Request(
url=url,
headers=self.default_headers,
callback=self.parse,
cookies=self.cookies,
cb_kwargs=dict(link= url, asin= self.asin),
)
yield request
def parse(self, response,**kwargs):
products = response.xpath('//link')
for product in products:
yield Request(
url=url,
headers=self.default_headers,
callback=self.product_parse,
cookies=self.cookies,
cb_kwargs=dict(link= url, asin= self.asin),
)
def product_parse(self, response,**kwargs):
# get all product details
yield item
1条答案
按热度按时间kxkpmulp1#
如下面的代码所示,您可以在本地为这个特定的spider在自定义设置中添加
CONCURRENT_REQUESTS
,以启用并发请求。spider可以定义自己的设置,这些设置将优先于并覆盖项目的设置。要阅读更多Setting per Spider
,请参阅您可以使用许多其他设定来取代CONCURRENT_REQUESTS,或与CONCURRENT_REQUESTS一起使用。
CONCURRENT_REQUESTS_PER_IP
-设置每个IP地址的并发请求数。CONCURRENT_REQUESTS_PER_DOMAIN
-定义每个域允许的并发请求数。MAX_CONCURRENT_REQUESTS_PER_DOMAIN
-设定网域允许的并行请求数目上限。