簡體   English   中英

無法使用請求從網頁中抓取某個字段的值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM