Как я могу очистить изображение с помощью Beautiful Soup и python

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

Ссылка: https://www.online.citibank.co.in/credit-card/rewards/citi-rewards-credit-card?eOfferCode=INCCCCTWAFCTRELM

Я использовал приведенный ниже код

x = ' https://www.online.citibank.co.in/credit-card/rewards/citi-rewards-credit-card?eOfferCode=INCCCCTWAFCTRELM'
html = urlopen(x)
soup = BeautifulSoup(html, 'lxml')
print(soup.find('div', class_ = "m-top-sm block-hero-art-2 display-image"))

Выход:

<img _ngcontent-c11="" alt="Citi Logo" class="logo" crossorigin="anonymous" src="https://www.cdn.citibank.com/v1/ingcb/cbol/files/images/logos/logo.png?_bust=2021-01-21T05-05-29-195Z"/>

Но это неправильная ссылка в src, которую я получаю, и это не ссылка на изображение.

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

Изображение для очистки с тегом

Какой тег следует использовать, чтобы получить точную ссылку на изображение?

Может ли кто-нибудь помочь мне с альтернативным кодом, с помощью которого я мог бы получить желаемый результат?


person Ali Baba    schedule 11.02.2021    source источник
comment
Это изображение карты добавляется JS динамически, поэтому bs4 не видит его в источнике HTML. Другими словами, просто отключите JavaScript на этом сайте и посмотрите, что там на самом деле.   -  person baduker    schedule 11.02.2021


Ответы (1)


согласно @baduker, изображение карты комментариев добавляется JS динамически, поэтому bs4 не видит его в исходном HTML. Поэтому вам следует попробовать селен с bs4

from bs4 import BeautifulSoup
from urllib.request import urlopen
from selenium import webdriver
x = ' https://www.online.citibank.co.in/credit-card/rewards/citi-rewards-credit-card?eOfferCode=INCCCCTWAFCTRELM'
wb = webdriver.Chrome()
wb.get(x)

soup = BeautifulSoup(wb.page_source, 'lxml')
print(soup.find('div', class_ = "m-top-sm block-hero-art-2 display-image"))
print(soup.find('div', class_ = "m-top-sm block-hero-art-2 display-image").find('img').get('src'))

Чтобы установить селен, запустите его в своем терминале или перейдите по ссылке выше.

pip install selenium
person Samsul Islam    schedule 11.02.2021
comment
Traceback (most recent call last): File "C:\Users\Hari\PycharmProjects\Card_Prj\venv\lib\site-packages\selenium\webdriver\common\service.py", line 72, in start self.process = subprocess.Popen(cmd, env=self.env, File "C:\Python39\lib\subprocess.py", line 947, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Python39\lib\subprocess.py", line 1416, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] The system cannot find the file specified Приведенный выше код дал мне эту ошибку. - person Ali Baba; 11.02.2021
comment
следуйте easeus.com/resource/ - person Samsul Islam; 11.02.2021
comment
Разве я не могу получить желаемый результат, просто используя красивый суп? - person Ali Baba; 11.02.2021
comment
да, вам нужен селен, чтобы получить динамический контент - person Samsul Islam; 11.02.2021
comment
Я последовал вашему совету, и теперь я могу очистить ссылки на изображения. Большое спасибо!!! - person Ali Baba; 11.02.2021