【问题标题】:Scraping and downloading images without a File Extension在没有文件扩展名的情况下抓取和下载图像
【发布时间】:2018-11-13 14:36:55
【问题描述】:

我正在尝试使用 Scrapy 的 Image/File pipeline 下载没有任何文件扩展名的图像。

例如这张图片:

https://burpple-2.imgix.net/foods/3d9294008d0f76a92e21647960_original.?w=400&h=400&fit=crop&q=80

如您所见,图片加载得很好,我可以抓取Scrapy 中的网址。但是,将 url 传递给 image_urlsfile_urls 不会产生下载的图像。

我尝试在网址末尾附加“.jpg”,但不起作用。

我将如何下载这些类型的图像?

编辑:

我已经启用ImagePipeline。从具有适当文件扩展名的其他 URL 下载工作正常,我可以看到图像已下载到指定文件夹。

【问题讨论】:

  • 为什么你认为这个文件没有扩展名?对我来说,它显示为 image/jpeg 文件
  • @Andersson 是的,它是 jpeg。但不知何故,即使我在网址末尾附加 .jpg 或 .jpeg,scrapy 也无法下载它。其他具有正确图片 url 的网站可以正常工作,所以我认为我的配置没有任何问题。
  • 但是图像也没有问题。我可以轻松下载文件

标签: python image web-scraping scrapy


【解决方案1】:

您是否在设置中启用了ImagePipeline

您应该能够看到如下所示的 INFO 日志:

2018-11-14 10:37:33 [scrapy.middleware] INFO: Enabled item pipelines:
['scrapy.pipelines.images.ImagesPipeline']

这段代码对我有用:

from scrapy.spiders import Spider

class MySpider(Spider):

    name = "burpple-2.imgix.net"
    start_urls = ['https://burpple-2.imgix.net/']

    custom_settings = {
        'ITEM_PIPELINES': {'scrapy.pipelines.images.ImagesPipeline': 1},
        'IMAGES_STORE': '/some/valid/folder/',
    }

    def parse(self, response):
        yield {
            'image_urls': ['https://burpple-2.imgix.net/foods/3d9294008d0f76a92e21647960_original.?w=400&h=400&fit=crop&q=80'],
        }

【讨论】:

  • 你看到图片实际下载到文件夹了吗?我已经启用ImagePipeline,其他有正确图片url的网站都可以下载就好了。
  • 是的,我可以在文件夹中看到本地下载的图像,它创建了一个名为full 的子文件夹,并且图像就在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2013-05-07
  • 1970-01-01
相关资源
最近更新 更多