Постобработка Scrapy CrawlSpider: нахождение среднего - PullRequest
0 голосов
/ 27 марта 2011

Допустим, у меня есть паук обхода, похожий на этот пример: из scrapy.contrib.spiders import CrawlSpider, Rule from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor из scrapy.selector import HtmlXPathSelector из scrapy.item import Item

class MySpider(CrawlSpider):
    name = 'example.com'
    allowed_domains = ['example.com']
    start_urls = ['http://www.example.com']

    rules = (
        # Extract links matching 'category.php' (but not matching 'subsection.php')
        # and follow links from them (since no callback means follow=True by default).
        Rule(SgmlLinkExtractor(allow=('category\.php', ), deny=('subsection\.php', ))),

        # Extract links matching 'item.php' and parse them with the spider's method parse_item
        Rule(SgmlLinkExtractor(allow=('item\.php', )), callback='parse_item'),
    )

    def parse_item(self, response):
        self.log('Hi, this is an item page! %s' % response.url)

        hxs = HtmlXPathSelector(response)
        item = Item()
        item['id'] = hxs.select('//td[@id="item_id"]/text()').re(r'ID: (\d+)')
        item['name'] = hxs.select('//td[@id="item_name"]/text()').extract()
        item['description'] = hxs.select('//td[@id="item_description"]/text()').extract()
        return item

Допустим, я хотел получить некоторую информацию, например, сумму идентификаторов на каждой из страниц или среднее количество символов в описании для всех проанализированных страниц.Как мне это сделать?

Кроме того, как я могу получить средние значения для определенной категории?

1 Ответ

3 голосов
/ 27 марта 2011

Вы можете использовать сборщик статистики Scrapy для создания такого рода информации или сбора необходимых данных для этого по ходу работы. Для статистики по категориям можно использовать ключ статистики по категориям.

Для быстрого сброса всей статистики, собранной во время сканирования, вы можете добавить STATS_DUMP = True к вашему settings.py.

Redis (через redis-py ) также отличный вариант для сбора статистики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...