gpt4 book ai didi

python - 每个 start_url 抓取了多少项目

转载 作者:太空狗 更新时间:2023-10-30 02:42:10 35 4
gpt4 key购买 nike

我使用 scrapy 抓取 1000 个 url 并将抓取的项目存储在 mongodb 中。我想知道为每个网址找到了多少项目。从 scrapy stats 我可以看到 'item_scraped_count': 3500但是,我需要分别为每个 start_url 计数。每个项目还有 referer 字段,我可能会用它来手动计算每个 url 项目:

2016-05-24 15:15:10 [scrapy] DEBUG: Crawled (200) <GET https://www.youtube.com/watch?v=6w-_ucPV674> (referer: https://www.youtube.com/results?q=billys&sp=EgQIAhAB)

但是我想知道scrapy是否有内置的支持。

最佳答案

接受挑战!

scrapy 上没有直接支持这个的东西,但是你可以用 Spider Middleware 把它从你的爬虫代码中分离出来。 :

中间件.py

from scrapy.http.request import Request

class StartRequestsCountMiddleware(object):

start_urls = {}

def process_start_requests(self, start_requests, spider):
for i, request in enumerate(start_requests):
self.start_urls[i] = request.url
request.meta.update(start_request_index=i)
yield request

def process_spider_output(self, response, result, spider):
for output in result:
if isinstance(output, Request):
output.meta.update(
start_request_index=response.meta['start_request_index'],
)
else:
spider.crawler.stats.inc_value(
'start_requests/item_scraped_count/{}'.format(
self.start_urls[response.meta['start_request_index']],
),
)
yield output

记得在 settings.py 上激活它:

SPIDER_MIDDLEWARES = {
...
'myproject.middlewares.StartRequestsCountMiddleware': 200,
}

现在您应该能够在您的蜘蛛统计信息中看到类似这样的内容:

'start_requests/item_scraped_count/START_URL1': ITEMCOUNT1,
'start_requests/item_scraped_count/START_URL2': ITEMCOUNT2,

关于python - 每个 start_url 抓取了多少项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37417373/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com