图片图片不下载图片

2024-10-06 12:11:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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是可以的。这些图像不见踪影。你知道我做错了什么吗?在


Tags: httpurlindexwwwtypeitemmediadatabase
2条回答

尝试在settings.py中替换

IMAGES_STORE = 'C:\Users\me\Desktop'

有:

^{pr2}$

如果它有效,那就是绝对路径的格式有问题。那么这两种方法中的任何一种都应该有效:

IMAGES_STORE = 'C:\\Users\\me\\Desktop'

或者

IMAGES_STORE = 'C:/Users/me/Desktop'

另外,这是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文件,因此没有激活图像管道。我不知道如何让它准确地引用我的设置文件,但这个解决方案对我来说已经足够好了!在

相关问题 更多 >