Scrapy ImagePipeline忽略特定主机上的图像

时间:2017-09-25 14:08:22

标签: python scrapy scrapy-spider

我有一个问题,我的ImagePipeline正在下载一些图像,而完全忽略其他图像。我通过使用loader.set_value()对文件路径进行硬编码来测试这一点。

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

# 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完全被忽略。没有调试麻烦,没有错误,没有。我运行完全相同的settings.py,没有其他更改。图像文件是相同的,我从测试B路径的浏览器下载它,然后在我自己的网站上的测试A路径上传它。没有对文件本身的更改。

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

这是我的settings.py:

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,
}

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

编辑:我创建了一个public repo来重现此问题。

1 个答案:

答案 0 :(得分:1)

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

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

因此修复很简单,在ROBOTSTXT_OBEY = False

中设置settings.py