Получение изображений 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/