Python 抓取:已抓取0页

Python 抓取:已抓取0页,python,scrapy,Python,Scrapy,我正在创建一个简单的scrapy项目,以更好地了解如何使用它,我打算做的是爬网StackOverflow的问题页面 首先调用我的spider,下面是文件的内容 # -*- coding: utf-8 -*- import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor class FirstSpider(CrawlSpider): n

我正在创建一个简单的scrapy项目,以更好地了解如何使用它,我打算做的是爬网StackOverflow的问题页面

首先调用我的spider,下面是文件的内容

# -*- coding: utf-8 -*-
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class FirstSpider(CrawlSpider):
    name = 'first'
    allowed_domains = ['stackoverflow.com']
    start_urls = ['https://stackoverflow.com/questions']

    rules = (
            Rule(LinkExtractor(allow=['/questions/\?page=\d&sort=newest']), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        item = scrapy.Item()

        selector_list = response.css('.question-summary')

        for selector in selector_list:
            item['question'] = selector.css('h3 a::text').extract()
            item['votes'] = selector.css('.vote-count-post strong::text').extract()
            item['answers'] = selector.css('.status strong::text').extract()
            item['views'] = selector.css('.views::text').extract()
            item['username'] = selector.css('.user-details a::text').extract()
            item['user-link'] = selector.css('.user-details a::attr(href)').extract()

        return item
然后,它应该遍历问题页面,收集信息

我可以从shell获取数据,但在尝试爬网或保存输出时失败

下面是scrapy crawl的输出:


应在items.py中定义项字段,如此处所述,否则将出现KeyError:

在您的情况下,需要在循环内而不是外部创建和生成上述项。比如:

for selector in selector_list:
    item = QuestionItem()
    item['question'] = selector.css('h3 a::text').get()
    ...
    yield item

也可以考虑使用项目加载器填充项目:

您是否尝试过Excel?如果您使用的是pycharm,为什么不在返回项之前放一个调试点呢。首先替换为extract_并将extract添加到selector_列表将返回相同的列表。将返回项替换为yield item^_^爬网仍然没有发生2018-04-07 15:53:43[scrapy.extensions.logstats]信息:以0页/分钟的速度爬网0页,以0项/分钟的速度爬网0项它甚至没有爬网第一页。你能发布爬网蜘蛛代码吗?使用了这个,但它仍然没有执行爬网。抱歉,如果不查看代码就很难发现问题,因为以下几个原因,代码示例不起作用。基于scrapy日志,爬行器一切正常,问题只在于解析响应和返回项。还可以尝试解析回调,而不是解析_项。在来回一点之后,它就可以工作了。现在讨论如何查询@SamB的特定链接。到底是什么让它起作用的?我现在正面临着同样的问题。。。信息:以0页/分钟的速度爬网0页,以0项/分钟的速度刮取0项
for selector in selector_list:
    item = QuestionItem()
    item['question'] = selector.css('h3 a::text').get()
    ...
    yield item