Я хотел бы почистить некоторые изображения с сайта. Я проверил сайт, и все выглядело довольно легко, поэтому я начал с простого красивого супа. Затем я заметил, что изображения в странном формате, возможно, связаны с base64, поэтому я попытался их декодировать, но из этого ничего не вышло. Я провел небольшое исследование и нашел предложения по использованию селена, потому что URL-адреса изображений могут отображаться с помощью javascript. Поэтому я попробовал это с селеном, но безуспешно.
Я пытаюсь получить URL-адрес изображения следующим образом:
img = self.browser.execute_script(f"return document.querySelectorAll('picture > img')[{num}]").get_attribute('src')
На странице 24 изображения, поэтому я перебираю их (через num
). Если я отлаживаю построчно, несколько URL отображаются правильно, однако, если я просто позволю коду go без точек останова, я получу все URL, как это:
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
.
I пытался декодировать его на base64, но для меня это не имеет смысла. И это также слишком короткий, чтобы быть реальным изображением. Правильно отрисованные URL показывают, что изображения на самом деле не gifs, а jpgs.
Я также пытался найти элемент с помощью селектора css (с использованием чистого Beautifulsoup и селена), но результат был одинаковым.
Я нашел это обсуждение: Как извлечь img sr c из веб-страницы через l xml в BeautifulSoup, используя python? , но это мне тоже не помогло. Я не нашел ни одного динамического ключа c (хотя есть сходства - изображения имеют несколько размеров), а код base64 слишком короткий, чтобы его можно было просмотреть в реальном времени, как указано выше.
Если я проверяю элемент в браузере я вижу правильный URL. Есть ли способ, которым я могу сделать то же самое, используя какой-нибудь красивый суп или селен (или другие python рамки для соскоба)? Каковы фактические данные, закодированные в base64?