【发布时间】:2019-01-09 00:15:27
【问题描述】:
这是我的第一个 Scrapy 蜘蛛项目。我是 Python 新手,所以请原谅我的无知。基本上,我想从 www.doritos.com/products/ 页面抓取图像。我打算将这些图像用于对象检测项目,因此我正在构建我的训练数据集。到目前为止的代码如下:
import scrapy
from scrapy.contrib.spiders import Rule, CrawlSpider
from scrapy.contrib.linkextractors import LinkExtractor
from doritos.items import DoritosItem
class DoritosSpider(CrawlSpider):
name = 'doritos'
allowed_domains = ['doritos.com']
start_urls = ['https://www.doritos.com']
rules = [Rule(LinkExtractor(allow=['/products/.*']), 'parse_doritos')]
def parse_doritos(self, response):
image = DoritosItem()
image['title'] = response.xpath(["//img[@id='alt'/text()"]).extract()
rel = response.xpath('//product_thumbnail/@src').extract()
image['image_urls'] = ['http:'+rel[0]]
return image
我检查了这些参考资料,试图拼凑出我的问题的答案。 如果答案在那里,我不会感到惊讶,但我的代码与我很难弄清楚的地方有很大的不同:
scrapy: request url must be str or unicode got list
Argument must be in bytes or unicode, got list
TypeError: argument 1 must be a string or unicode object
Argument must be bytes or unicode, got '_Element'
我从这些参考资料中了解到,我需要将函数中的参数转换为字符串。这是显示错误的回溯的屏幕截图: SCRAPY Traceback Error
我认为它位于 parse_doritos 函数的第二行,但我无法找到解决方法。如果有人可以帮助我解决这个问题,我真的很想:a)让这件事正常工作,b)了解我哪里出错了,为什么你的修复工作有效。
【问题讨论】:
-
请将错误发布为代码,而不是图像。
-
一般来说,截图是不能复制的,不会出现在搜索引擎结果中,经常会给手机用户带来问题。对于任何可以合理地表示为文本的内容,请避免使用它们。
-
除此之外,这是一个很好的问题。欢迎使用 Python 和 Stack Overflow。
-
对了,
response.xpath不应该是response.selector.xpath(两次)吗?
标签: python unicode scrapy typeerror scrapy-spider