假设我有一个类似于此示例的爬行蜘蛛: 来自scrapy.contrib.spiders导入CrawlSpider,Rule 来自scrapy.contrib.linkextractors.sgml导入SgmlLinkExtractor 来自scrapy.selector导入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
假设我想获取一些信息,例如每个页面的ID总和,或者所有已解析页面中描述中的平均字符数。我该怎么做?
另外,我如何获得特定类别的平均值?
答案 0 :(得分:3)
您可以使用Scrapy的stats collector来构建此类信息,或者随时收集必要的数据。对于每个类别的统计信息,您可以使用每个类别的统计信息密钥。
要快速转储在抓取过程中收集的所有统计信息,您可以将STATS_DUMP = True
添加到settings.py
。