问题描述
链接: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"/>
HTML 代码中突出显示的部分是图片链接所在的位置。 如果我能得到正确的代码来抓取图片链接,我会很高兴。
任何人都可以帮助我使用替代代码来获得所需的结果吗?
解决方法
根据@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