【问题标题】:Different output from scrapy spider than from scrapy shellscrapy spider 的输出与 scrapy shell 的输出不同
【发布时间】:2018-05-18 14:29:45
【问题描述】:

我是scrapy的新手,我正在尝试弄清楚为什么我能够从scrapy shell中提取我需要的元素,但不能从我从命令行创建的scrapy spider中提取。

在 scrapy shell 中我做了以下操作:

pipenv run scrapy shell http://quotes.toscrape.com/

然后

response.css('small.author::text').extract()

返回以下内容:

['阿尔伯特爱因斯坦','J.K.罗琳、阿尔伯特·爱因斯坦、简·奥斯汀、玛丽莲·梦露、阿尔伯特·爱因斯坦、安德烈·纪德、托马斯·爱迪生、埃莉诺·罗斯福、史蒂夫·马丁]

这一切都符合预期。但是当我创建一个scrapy蜘蛛并在之后运行它时,我开始遇到一些问题。我的代码如下:

# -*- coding: utf-8 -*-
import scrapy

class Yolo1Spider(scrapy.Spider):
    name = 'yolo1'
    allowed_domains = ['toscrape.com']
    start_urls = ['http://http://quotes.toscrape.com/']

    def parse(self, response):
        self.log('Just visited' + response.url)
        yield {
            'author': response.css('small.author::text').extract()
            }

我从命令行运行蜘蛛:

pipenv run scrapy crawl yolo1

我得到的错误如下:

2017-12-04 20:03:56 [yolo1] DEBUG: 刚访问http://www.dnsrsearch.com/index.php?origURL=http://http/quotes.toscrape.com/&bc= 2017-12-04 20:03:56 [scrapy.core.scraper] 错误:错误处理 {'author': []} 回溯(最近一次通话最后): _runCallbacks 中的文件“c:\users\alice.virtualenvs\all-the-places-c44chfla\lib\site-packages\twisted\internet\defer.py”,第 653 行 current.result = callback(current.result, *args, **kw) 文件“C:\Users\alice\all-the-places\locations\pipelines.py”,第 16 行,在 process_item 参考=项目['参考'] KeyError:'ref'

我觉得我只是错过了一些简单的东西,但对于我的生活,我无法弄清楚并且一直在到处检查。

你可以在蜘蛛爬行的输出中看到我写的调试行打印出来了,但是之后我得到了一个错误。真的认为我应该从蜘蛛和命令行工作中获得相同的输出。

【问题讨论】:

  • 您的网址中有两次http:// - 请参阅'http://http://quotes.toscrape.com/

标签: python scrapy web-crawler


【解决方案1】:

您在起始网址中犯了错误 - 您有两次 http://

http://http://quotes.toscrape.com/

【讨论】:

  • 非常感谢。有时,您真的需要对这些事情重新审视。
猜你喜欢
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
相关资源
最近更新 更多