scrapy爬取图片的时候遇到报错:
报错语句:
items["image_urls"]="https:"+response.xpath('//*[@id="page-hd"]/div/div[1]/div/a/img/@src').extract_first()
报错日志:
image的url已经获取到了,但是进入pipline处理的时候报错了:
进到这个函数里面看一下:
def get_media_requests(self, item, info):
urls = ItemAdapter(item).get(self.images_urls_field, [])
return [Request(u) for u in urls]
原来是对于urls里面的每一个元素,都会进行requests请求,但是按照我的这种方式,urls是一个字符串,因此请求必然就会出错了
解决方案:
把urls转变为lisi格式:
ss="https:"+response.xpath('//*[@id="page-hd"]/div/div[1]/div/a/img/@src').extract_first()
items["image_urls"]=['{}'.format(ss)]
这个时候再请求就是整个url的请求,就可以继续往下走了