【问题标题】:How to get number of Items scraped by Python Scrapy tool?如何获取 Python Scrapy 工具抓取的项目数?
【发布时间】:2013-11-03 03:40:34
【问题描述】:

我正在使用 Python Scrapy 工具从网站中提取数据。我能够抓取数据。现在我想要从特定网站上抓取的项目数。我怎样才能得到刮掉的物品数量?在 Scrapy 中是否有一些内置的类?任何帮助将不胜感激。谢谢..

【问题讨论】:

  • 为什么不在最终的打印语句中保留一个计数器。
  • 你可能想看看Scrapy Stats Collection
  • @pault。我查看了 Scrapy Stats Collection,但无法获得 Scrapy 的项目数。我应该尝试这样的事情 mahmoud.abdel-fattah.net/2012/07/23/… 吗?
  • 伙计们.. 我尝试了此链接的示例扩展:doc.scrapy.org/en/latest/topics/extensions.html.. 但是如何在我的设置文件中设置 MYEXT_ITEMCOUNT 的值...默认情况下我已将其设置为 1000。 . 但这不起作用,因为我没有得到正确的答案.. 请帮助..

标签: python scrapy


【解决方案1】:

基于示例here,我解决了同样的问题:

1.编写一个这样的自定义网络服务来统计下载的项目:

from scrapy.webservice import JsonResource
from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher


class ItemCountResource(JsonResource):

    ws_name = 'item_count'

    def __init__(self, crawler, spider_name=None):
        JsonResource.__init__(self, crawler)
        self.item_scraped_count = 0
        dispatcher.connect(self.scraped, signals.item_scraped)
        self._spider_name = spider_name
        self.isLeaf = spider_name is not None

    def scraped(self):
        self.item_scraped_count += 1

    def render_GET(self, txrequest):
        return self.item_scraped_count

    def getChild(self, name, txrequest):
        return ItemCountResource(name, self.crawler)

2. 像这样在settings.py注册服务:

WEBSERVICE_RESOURCES = {
    'path.to.ItemResource.ItemCountResource': 1,
}

3.visite http://localhost:6080/item_count 将抓取该项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2014-10-04
    相关资源
    最近更新 更多