我使用try except
来避免错误,但我的终端仍然显示错误,但没有显示日志消息:
raise ValueError('Missing scheme in request url: %s' % self._url)
exceptions.ValueError: Missing scheme in request url:
当scrapy没有得到image_urls时,如何避免此错误? 请指导我,非常感谢。
try:
item['image_urls'] = ["".join(image.extract()) ]
except:
log.msg("no image foung!. url={}".format(response.url),level=log.INFO)
答案 0 :(得分:17)
image_urls
字段应该是列表,而不是str。
item['image_urls'] = image.extract()
如果您这样做,并且仍然引发异常,那么您抓取的网址似乎是相对路径。
ImagePipeline
并不知道您的主机,因此无法生成抓取的绝对路径。
import urlparse
item['image_urls'] = [ urlparse.urljoin(response.url, u) for u in image.extract() ]
答案 1 :(得分:9)
“请求网址中缺少方案”意味着您缺少网址的“http://”部分,很可能是因为您的网址是相对的,应该是绝对的。