Получение изображений URL в Scrapy

Я очень новичок в любой форме кодирования. Я начал учебный процесс, пытаясь сделать простой сканер с помощью Scrapy. Это вроде работает, но по какой-то причине я не могу получить URL изображения для вывода должным образом. Он выдает некоторое значение "data:image/gif;base64..." вместо фактической ссылки в атрибуте src. Я искал ответы, но я не могу найти ничего, что дало бы мне окончательный ответ (к тому же я, возможно, не до конца понимаю проблему). Любая помощь будет принята с благодарностью.

def parse(self, response):
    for data in response.css("a.styles__link--2pzz4"):
        yield {
            'title': data.css('a::attr(title)').get(),
            'price': data.css('span::text').get(),
            'url': data.css('a::attr(href)').get(),
            'image url': data.css('img::attr(src)').get(),
        }

        next_page = response.css('li span a::attr(href)').get()
        if next_page is not None:
            next_page = response.urljoin(next_page)
            yield scrapy.Request(next_page, callback=self.parse)  

2 ответа

Можете ли вы дать нам ссылку, которую вы хотите очистить?

Иногда сайты загружаются лениво и прячут обычные ссылки в других img атрибутов. Например, data-original, data-srcи т. д. Или сохраняйте ссылки на изображения в jsons, хранящиеся в скрипте на странице.

Ваш веб-сайт может определять данные изображения как BLOB-кодированный код с использованием URI данных. По сути, данные изображения встроены в HTML, поэтому нет нормального URL-адреса. Узнайте больше здесь: https://css-tricks.com/data-uris/

Другие вопросы по тегам