如何使用Beautiful Soup和python刮取图像

2024-06-08 08:54:46 发布

您现在位置: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代码中突出显示的部分是图像链接所在的位置。 我很高兴如果我得到正确的代码刮图像链接

Image to be scraped with the tag

应该使用哪个标签才能获得准确的图像链接

有谁能帮我找到另一种代码,用它我可以得到想要的结果


Tags: 代码inhttps图像链接wwwcardonline
1条回答
网友
1楼 · 发布于 2024-06-08 08:54:46

由于@baduker注释卡图像是由JS动态添加的,因此bs4在源HTML中看不到这一点。因此您应该尝试使用bs4 selenium

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'))

要安装selenium,请在您的终端中运行此程序或按照上面的链接进行操作

pip install selenium

相关问题 更多 >