Python 抓取:已抓取0页
我正在创建一个简单的scrapy项目,以更好地了解如何使用它,我打算做的是爬网StackOverflow的问题页面 首先调用我的spider,下面是文件的内容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
# -*- 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