【发布时间】: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