每个start_url已刮取多少个项目

PHA

我使用scrapy抓取1000个URL,并将已刮擦的项目存储在mongodb中。我想知道每个网址有多少个项目。从不可靠的统计信息中我可以看到,'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的内置支持。

LR

已接受的挑战!

没有任何东西scrapy可以直接支持此功能,但是您可以使用以下代码将其与您的Spider代码分开Spider Middleware

middlewares.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,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每个start_url已刮取多少个项目

来自分类Dev

atexit()已注册了多少个函数?

来自分类Dev

每个节点需要多少个突触?

来自分类Dev

数组中的每个项目之前有多少个连续的元素要小

来自分类Dev

列表可以包含多少个项目?

来自分类Dev

Scrapy:为每个start_url动态生成规则

来自分类Dev

Scrapy Pipeline 为每个 start_url 更新 mysql

来自分类Dev

PDO如何回显多少个已更新

来自分类Dev

计算Documentum中已更新了多少个对象

来自分类Dev

每个方法应运行多少个测试方法?

来自分类Dev

Tyrus每个websocket连接使用多少个线程?

来自分类Dev

每个列表可以创建多少个查询列?

来自分类Dev

每个子网下有多少个地址

来自分类Dev

SQL查询:每个国家有多少个区?

来自分类Dev

Firebase的Spark版本中可以有多少个项目?

来自分类Dev

QLDB的交易中可以更新多少个项目?

来自分类Dev

检查列表包含多少个相同项目

来自分类Dev

QComboBox中的项目需要多少个像素?

来自分类Dev

计算要使用多少个不同的项目

来自分类Dev

haar级联分类器需要多少个不同的项目

来自分类Dev

多少个XUSER

来自分类Dev

可以将多少个URL写入物理Web信标?

来自分类Dev

使用Scrapy可以处理多少个URL?

来自分类Dev

有多少个NSOperationQueues?

来自分类Dev

多少个任务太多?

来自分类Dev

有多少个WindowInsets?

来自分类Dev

多少个远程用户?

来自分类Dev

APL 多少个整数

来自分类Dev

python scrapy spider:在每个start_url的parse()方法中传递其他信息