python - BeautifulSoup4:通过 find() 无法找到具有特定 href 值的“a”标签
问题描述
我正在尝试使用 python3从https://www.coinbase.com/pt-PT/price/抓取实时比特币-港元货币。
我发现在 HTML 中专门找到它的唯一方法是使用href ="/pt-PT/price/bitcoin"
<a href="/pt-PT/price/bitcoin" title="Visite a moeda Bitcoin" data-element-handle="asset-highlight-top-daily-volume" class="Link__A-eh4rrz-0 hfBqui AssetHighlight__StyledLink-sc-1srucyv-1 cbFcph" color="slate">
<h2 class="AssetHighlight__Title-sc-1srucyv-2 jmJxYl">Volume mais alto (24 h)</h2>
<div class="Flex-l69ttv-0 gaVUrq">
<img src="https://dynamic-assets.coinbase.com/e785e0181f1a23a30d9476038d9be91e9f6c63959b538eabbc51a1abc8898940383291eede695c3b8dfaa1829a9b57f5a2d0a16b0523580346c6b8fab67af14b/asset_icons/b57ac673f06a4b0338a596817eb0a50ce16e2059f327dc117744449a47915cb2.png" alt="Visite a moeda Bitcoin" aria-label="Visite a moeda Bitcoin" loading="lazy" class="AssetHighlight__AssetImage-sc-1srucyv-5 lcjcxh"/>
<div class="Flex-l69ttv-0 kvilOX">
<div class="Flex-l69ttv-0 gTbYCC">
<h3 class="AssetHighlight__SubTitle-sc-1srucyv-3 gdcBEE">Bitcoin</h3>
<p class="AssetHighlight__Price-sc-1srucyv-4 bUAWAG">460 728,81 HK$</p>
这里460 728,81 HK$是想要的数据。
因此,我应用了以下代码:
import bs4
import urllib.request as req
url="https://www.coinbase.com/prthe ice/bitcoin/hkd"
request=req.Request(url,headers={
"user-agent":"..."
})
with req.urlopen(request) as response:
data=response.read().decode("utf-8")
root=bs4.BeautifulSoup(data,"html.parser")
secBitcoin=root.find('a',href="/pt-PT/price/bitcoin")
realtimeCurrency=secBitcoin.find('p')
print(realtimeCurrency.string)
但是,它总是返回 secBitcoin = None。没有结果匹配。
当我使用类参数搜索“div”标签时,查找功能工作得很好。
我也尝试过像这样的格式
.find('a[href="/pt-PT/price/bitcoin"]')
但没有任何效果。
解决方案
页面可能在初始页面加载后加载货币值。您可以尝试按 ctrl+s 来保存整个网页并打开该文件,而不是使用请求。如果这也不起作用,那么我不确定问题出在哪里。如果这确实有效,那么你可能需要使用像 selenium 这样的东西来获得你需要的东西
推荐阅读
- git - Git 元数据 - 有没有办法添加独立于每个分支的 git 元数据?
- c++ - 在运行之前获取 std::thread 的 thread:id?
- php - 使用 Mikrotik API 更改 Mikrotik 中 PPP 秘密的配置文件
- macos - 强制 NSTabView 在 MacOS 上加载选项卡的新实例
- webpack - Vue延迟加载不起作用
- templates - 如何使用未来的解析器在人偶模板中包含子模板
- bash - 在bash中获取后台进程的退出状态
- python - pip 存在,表示没有名为 pip 的模块
- android - 更改 AOSP 并在移动设备上刷入
- angular - 输入字段更改时更改单选按钮的值