我有一个问题,我的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来重现此问题。
答案 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