无法使用请求从网页中抓取特定字段的值

Balance我正在尝试使用请求模块从网页中获取 的值。Balance我在开发工具和页面源代码中查找过该名称,但没有找到。我希望应该有任何方法可以在不使用任何浏览器模拟器的情况下从该网页获取价值Balance

网站地址

我追求的输出:

https://img1.sycdn.imooc.com/65961a640001559003580060.jpg

我尝试过:


import requests

from bs4 import BeautifulSoup


link = 'https://tronscan.org/?fbclid=IwAR2WiSKZoTDPWX1ufaAIEg9vaA5oLj9Yd_RUfpjE6MWEQKRGBaK-L_JdtwQ#/contract/TCSPn1Lbdv62QfSCczbLdwupNoCFYAfUVL'


headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"}


res = requests.get(link,headers=headers)

soup = BeautifulSoup(res.text,'lxml')

balance = soup.select_one("li:has(> p:contains('Balance'))").get_text(strip=True)

print(balance)


拉丁的传说
浏览 113回答 1
1回答

慕田峪4524236

页面的 HTML 没有平衡的原因是页面正在发出 AJAX 请求,这些请求在页面加载后发送回您想要的信息。您可以通过在 Chrome 中按 F12 加载开发人员窗口来查看这些请求(在其他浏览器中可能有所不同),转到“网络”选项卡,您将看到以下内容:在这里,您可以看到所需的请求account?address=后面是页面 URL 字符串中的代码,将鼠标悬停在该代码上会显示 AJAX 请求的完整 URL(以珊瑚色突出显示),以及包含以下内容的响应部分:您想要的数据在右侧以绿松石色突出显示。您可以通过转到此处并查找来查看响应tokenBalances。为了在 Python 中获得平衡,您可以运行以下命令:import requests, jsonurl = 'https://apilist.tronscan.org/api/account?address=TCSPn1Lbdv62QfSCczbLdwupNoCFYAfUVL'headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"}response = requests.get(url, headers=headers)response = json.loads(response.text)balance = response['tokenBalances'][0]['balance']print(balance)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python