![](/img/trans.png)
[英]Can't scrape a certain field from a webpage using requests even when that very field is available in page source
[英]Can't scrape the value of a certain field from a webpage using requests
我正在尝试使用请求模块从网页中获取Balance
的值。 我在开发工具和页面源代码中寻找过名称Balance
,但没有找到。 我希望应该有任何方法可以在不使用任何浏览器模拟器的情况下从该网页中获取Balance
的值。
我追求的输出:
我试过:
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)
页面的 HTML 没有平衡的原因是页面正在发出 AJAX 请求,这些请求在页面加载后发回您想要的信息。 您可以通过在 Chrome 中按 F12 加载开发人员窗口来查看这些请求(在其他浏览器中可能会有所不同),转到“网络”选项卡,您将看到:
在这里,您可以看到您想要的请求是account?address=
后跟页面 URL 字符串中的代码,将鼠标悬停在显示 AJAX 请求的完整 URL(以珊瑚色突出显示)以及包含您想要的数据的响应在右侧以绿松石突出显示。
您可以通过转到此处并找到tokenBalances
来查看响应。
为了在 Python 中获得平衡,您可以运行以下命令:
import requests, json
url = '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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.