[英]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.