擦拭图pipeline忽略特定主机上的图像



我有一个问题,即我的image pipeline正在下载一些图像,而完全忽略了其他图像。我通过使用loader.set_value()进行硬编码来对此进行测试。

这是相同图像的两个示例,请注意,我一次只写1行,而不是同时写一行。

# Test A, Works fine. Scrapy DOES download.
loader.add_value('image_urls', ['http://hemmon.com/house.jpg'])
# Test B, Not working. Scrapy does NOT download.
loader.add_value('image_urls', ['https://media.fastighetsbyran.se/23566167.jpg?Bredd=300'])

测试A成功下载,测试B被完全忽略。没有Debug Messags,没有错误,什么也没有。我运行完全相同的设置。图像文件是相同的,我是从测试B路径上从浏览器下载它的,然后在测试A路径上将其上传到我自己的网站上。文件本身没有更改。

请注意,我还尝试了同一主机上的其他文件。所有这些都被忽略了。

这是我的设置:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
IMAGES_STORE = os.path.join(BASE_DIR, 'images')
ITEM_PIPELINES = {
    'scrapy.pipelines.images.ImagesPipeline': 1,
}

我发现这篇文章似乎有类似的问题,并且与标题有关。这可以解释为什么我可以从一个主机下载完全相同的图像,而不是从另一个主机下载。

编辑:我创建了一个复制此问题的公共回购。

您的问题实际上已打印到日志

2017-09-25 22:53:17 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://media.fastighetsbyran.se/22943836.jpg>

因此,修复很简单,请在您的settings.py

中设置ROBOTSTXT_OBEY = False

最新更新