Scrapy中如何在终端获取item_scraped_count指标?
解决Scrapy爬虫未显示item_scraped_count的问题
你的爬虫没有生成item_scraped_count指标,核心原因是CSS选择器匹配失败,没有抓取到任何书籍数据,导致Scrapy无法统计已爬取的Item数量。以下是具体问题和修正方案:
问题分析
- 书籍容器选择器错误:原代码中
response.css('article.product_prod')的class名拼写错误,目标网站的书籍容器class是product_pod而非product_prod,这导致你无法遍历到任何书籍元素。 - 价格选择器错误:原代码中
.product_price .product_color::text的class名错误,价格对应的class是price_color而非product_color,这会导致价格字段抓取结果为None。
修正后的代码
import scrapy class BookspiderSpider(scrapy.Spider): name = "bookspider" allowed_domains = ["books.toscrape.com"] start_urls = ["https://books.toscrape.com/"] def parse(self, response): # 修正书籍容器选择器 books = response.css('article.product_pod') for book in books: yield{ 'title' : book.css("h3 a::text").get(), # 修正价格选择器 'price' : book.css(".product_price .price_color::text").get(), 'url' : book.css("h3 a").attrib['href'] } next_page = response.css("li.next a::attr(href)").get() if next_page is not None: if 'catalogue/' in next_page: next_page_url = 'https://books.toscrape.com/' + next_page else: next_page_url = 'https://books.toscrape.com/catalogue/' + next_page yield response.follow(next_page_url, callback=self.parse)
验证结果
修正后重新运行爬虫,终端统计结果中会出现item_scraped_count指标(目标网站共1000本书,最终该指标值应为1000),同时你能看到每本书的抓取数据输出。
内容的提问来源于stack exchange,提问作者Siroj
相关产品推荐
相关产品推荐

