Расшифруйте закодированные в base64 URL-адреса, используя селен - PullRequest
0 голосов
/ 08 апреля 2020

Я хотел бы почистить некоторые изображения с сайта. Я проверил сайт, и все выглядело довольно легко, поэтому я начал с простого красивого супа. Затем я заметил, что изображения в странном формате, возможно, связаны с 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?

1 Ответ

3 голосов
/ 08 апреля 2020

Если вы посмотрите на исходный код сайта, ссылки на изображения, которые вы пытаетесь удалить, существуют в другом теге noscript.

, вы можете получить их, используя requests и Beautifulsoup следующим образом :

import requests
from bs4 import BeautifulSoup as bs
url = 'https://eshop.nobilis.cz/aromaterapie/'
res = requests.get(url,headers={'User-Agent': 'Mozilla/5.0'})

soup = bs(res.content, 'html.parser')

images = soup.select('noscript img')
for img in images:
        img_link = img.get('src')
        img_alt  = img.get('alt')
        print(img_alt , '==>' , img_link)

Вывод:

Obrázek kategorie Aromaterapie ==> https://cdn.nobilis.cz/image/custom-w1920-h480-crop/content/aromaterapie_3840x960-bb98d24ff24a2c55.jpg
Keramický difuzér ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/4/6/33/keramicky-difuzer__S8Ru.jpg
Keramická destička ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/4/5/31/n1700-kopie__nQwF.jpg
Aroma difuzér ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/4/6/57/t0328-aroma-difuzer__JYKy.jpg
MINI difuzér ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/5/6/86/01-t0330-mini-difuzer__9RjF.jpg
Zen difuzér ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/5/3/20/t0329-zen-difuzer__IBcR.jpg
Náplně do MINI difuzéru 10 ks ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/4/5/7/t0331s__IqbM.jpg
Aromaterapie na cesty ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/4/5/55/s0103-aromaterapie-na-cesty__0hat.jpg
Keramická amforka ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/5/7/13/keramicka-amforka-kopie__bpFN.jpg
Prostorový difuzér éterických olejů ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/4/7/59/t0320__egh5.jpg
Směs éterických olejů Inspirace ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/7/0/57/e1081b-smes-eterickych-oleju-inspirace__YAb1.jpg
Směs éterických olejů Tantra ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/4/63/e2006b-smes-eterickych-oleju-tantra__KeIG.jpg
Éterický olej bio Citron ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/7/4/59/b0015b-bio-citron__KvPJ.jpg
Éterický olej Meduňka ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/6/94/e1027-medunka-1-ml__svsg.jpg
Éterický olej Bergamot ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/7/0/27/e0008b-etericky-olej-bergamot__gab2.jpg
Éterický olej Grapefruit ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/8/71/e0024b-etericky-olej-grapefruit__J85r.jpg
Éterický olej bio Rozmarýn ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/5/8/12/b0016b-bio-rozmaryn__POvK.jpg
Směs éterických olejů Druhý dech ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/7/3/27/e2002b-smes-eterickych-oleju-druhy-dech__dPzL.jpg
Éterický olej Šalvěj muškátová ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/5/8/93/e0045b-etericky-olej-salvej-muskatova__wAFx.jpg
Éterický olej Cypřiš ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/3/55/e0017b-etericky-olej-cypris__RxDS.jpg
Éterický olej Skořice, kůra ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/7/0/60/e0074b-etericky-olej-skorice-kura__tK0h.jpg
Éterický olej Geranium ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/2/71/e1057b-etericky-olej-geranium__dCRQ.jpg
Éterický olej Konopí ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/5/7/67/e0154h-konopi-1-ml__b2oW.jpg
Růže v jojobovém oleji ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/7/24/n1010c-ruze-v-jojobe-20-ml__jzLM.jpg
Éterický olej bio Tymián linalol ==> https://cdn.nobilis.cz/image/custom-w225-h250/data/persistent/products/6/3/82/b0005a-bio-tymian-linalol__8IFa.jpg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...