我用python运行一个Scrapy spider从一个网站上抓取图片。在尝试了其他一些方法之后,我尝试实现一个ImagesPipeline来完成这个任务。在
项目.py
class NHTSAItem(scrapy.Item):
image_urls = scrapy.Field()
images = scrapy.Field()
设置.py:
^{pr2}$神秘感.py
def parse_photo_page(self, response):
item = NHTSAItem()
for sel in response.xpath('//table[@id="tblData"]/tr'):
url = sel.xpath('td/font/a/@href').extract()
table_fields = sel.xpath('td/font/text()').extract()
if url:
base_url_photo = "http://www-nrd.nhtsa.dot.gov"
full_url = base_url_photo + url[0]
if not item:
item['image_urls'] = [full_url]
else:
item['image_urls'].append(full_url)
return item
没有出现错误,图片只是没有下载。调试器甚至说“Scraped”这是日志:
DEBUG: Scraped from <200 http://www-nrd.nhtsa.dot.gov/database/VSR/veh/../SearchMedia.aspx?database=v&tstno=4000&mediatype=p&p_tstno=4000>
{'image_urls': [u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=1&database=V&type=P',
u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=2&database=V&type=P',
u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=3&database=V&type=P',
u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=4&database=V&type=P',
u'http://www-nrd.nhtsa.dot.gov/database/MEDIA/GetMedia.aspx?tstno=4000&index=5&database=V&type=P']}
我不关心扩展管道(创建一个自定义管道),默认的imagespipeline是可以的。这些图像不见踪影。你知道我做错了什么吗?在
尝试在
settings.py
中替换有:
^{pr2}$如果它有效,那就是绝对路径的格式有问题。那么这两种方法中的任何一种都应该有效:
或者
另外,这是
settings.py
。其他问题/答案中的相对xpath问题也适用于此。在这是我从这个平行问题中得到的解决方案:Scrapy: Error 10054 after retrying image download(感谢@neverlastn)
我只是把这个片段加到我的蜘蛛网.py文件。在
custom_settings = { "ITEM_PIPELINES": {'scrapy.pipelines.images.ImagesPipeline': 1}, "IMAGES_STORE": saveLocation }
我认为它没有正确地引用我的设置.py文件,因此没有激活图像管道。我不知道如何让它准确地引用我的设置文件,但这个解决方案对我来说已经足够好了!在
相关问题 更多 >
编程相关推荐