После: scrapy's учебник я сделал простой гусеничный образ (царапины изображений Bugattis). Ниже проиллюстрировано значение . Пример.Scrapy: Images Pipeline, download images
Однако, после того, как руководство оставило меня с неработающим гусеничным ходом! Он находит все URL-адреса, но не загружает изображения.
Я нашел решение для утиных лент: замените ITEM_PIPELINES
и IMAGES_STORE
такими, что;
ITEM_PIPELINES['scrapy.pipeline.images.FilesPipeline'] = 1
и
IMAGES_STORE
->FILES_STORE
Но я не знаю, почему это работает? Я хотел бы использовать ImagePipeline, как описано в обзоре.
ПРИМЕР
settings.py
BOT_NAME = 'imagespider'
SPIDER_MODULES = ['imagespider.spiders']
NEWSPIDER_MODULE = 'imagespider.spiders'
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = "/home/user/Desktop/imagespider/output"
items.py
import scrapy
class ImageItem(scrapy.Item):
file_urls = scrapy.Field()
files = scrapy.Field()
imagespider.py
from imagespider.items import ImageItem
import scrapy
class ImageSpider(scrapy.Spider):
name = "imagespider"
start_urls = (
"https://www.find.com/search=bugatti+veyron",
)
def parse(self, response):
for elem in response.xpath("//img"):
img_url = elem.xpath("@src").extract_first()
yield ImageItem(file_urls=[img_url])
Спасибо! Вы также можете изменить 'ImageItem', чтобы иметь' image_urls' и 'yield ImageItem (image_urls = [img_url])' –