【发布时间】:2021-02-16 14:18:28
【问题描述】:
我正在尝试从此链接中刮取卡片的标题:https://www.axisbank.com/retail/cards/credit-card
使用下面的代码
from urllib.request import urlopen
from bs4 import BeautifulSoup
import json, requests, re
axis_url = ["https://www.axisbank.com/retail/cards/credit-card"]
html = requests.get(axis_url[0])
soup = BeautifulSoup(html.content, 'lxml')
print(soup.select("#ulCreditCard h3"))
输出如下:
[]
我主要关心的是,当我在 soup.select() 函数中以 #ulCreditCard h3 的这种形式使用选择器小工具时,我应该如何指定我使用选择器小工具获得的 css 选择器标签。
【问题讨论】:
-
您所做的对 BeautifulSoup 来说很好,问题实际上是因为该站点使用 JavaScript 动态加载卡片信息。 BeautifulSoup 不执行 JavaScript 并动态更新 HTML。如果您打印出通过请求获得的 HTML,我敢打赌您找不到卡片,这就是 CSS 选择器找不到它的原因。您可能必须使用 Selenium 之类的可以在 HTML 上执行 JS 的东西,然后您应该能够找到内容。
-
@facelessuser 你能写出相应的硒代码吗!!!
标签: python web-scraping beautifulsoup python-requests scrapinghub