1đź‘Ť
there is no bug in scrapy related to your problem.
defining these two fields in items are compulsory for downloading images Using ImagesPipeline.
image_urls = Field()
images = Field()
1) In a Spider, you scrape an item and put the URLs of its images into a image_urls field.
2) The item is returned from the spider and goes to the item pipeline.
3) When the item reaches the ImagesPipeline, the URLs in the image_urls field are scheduled for download using the standard Scrapy scheduler and downloader (which means the scheduler and downloader middlewares are reused), but with a higher priority, processing them before other pages are scraped. The item remains “locked” at that particular pipeline stage until the images have finish downloading (or fail for some reason).
4) When the images are downloaded another field (images) will be populated with the results. This field will contain a list of dicts with information about the images downloaded, such as the downloaded path, the original scraped url (taken from the image_urls field) , and the image checksum. The images in the list of the images field will retain the same order of the original image_urls field. If some image failed downloading, an error will be logged and the image won’t be present in the images field.