Скачать несколько предметов через imagepipeline - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь загрузить все изображения с веб-сайта, однако могу получить возврат только одного изображения на страницу / элемент. Я пытаюсь заставить своего паука загрузить все изображения, представленные на странице.

        for elem in response.xpath("//img"):
        img_url = elem.xpath("@src").extract_first()
        l.add_value('image_urls', [img_url])
        l.add_value('url', response.url)
        l.add_value('project', self.settings.get('BOT_NAME'))
        l.add_value('spider', self.name)
        l.add_value('server', socket.gethostname())
        l.add_value('date', datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
        return l.load_item()

Когда я изменяю .extract_first () на .extract (), паук перестает работать, однако я не могу понять, как передать URL каждого изображения (на странице может быть несколько десятков), чтобы он представлял собой отдельный элемент + загрузка.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 21 марта 2019

Вы получаете только одно изображение, потому что return немедленно покидает ваш метод. Используйте yield вместо return для желаемого поведения.

Подробнее см. этот другой ответ .

...