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

时间:2021-02-11 10:30:27

标签: python web-scraping beautifulsoup python-requests scrapinghub

我试图从下面的链接中抓取图片链接,但我无法

链接: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

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

任何人都可以帮助我使用替代代码来获得所需的结果吗?

1 个答案:

答案 0 :(得分:1)

根据@baduker 评论卡图像是由 JS 动态添加的,所以 bs4 在源 HTML 中看不到这个。所以你应该尝试 selenium 和 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'))

要安装 selenium,请在您的终端中运行它或点击上面的链接。

pip install selenium