Python BeautifulSoup抓取BSCScan交易页面数据错误问题求助
BscScan交易数据爬取选择器调整方案
调整说明
两个异常均由选择器定位错误导致,对应调整逻辑如下:
- 区块号缺失:原有选择器仅匹配到了区块确认数的标签,实际区块号存储在id为
ContentPlaceHolder1_spanBlockNumber的a标签中,获取该值后和确认数拼接即可得到完整内容。 - 接收地址显示哈希:原有选择器匹配到了存储地址哈希的子span,合约名称存储在id为
spanToAdd的span下的a标签文本中,调整选择器定位该标签即可获取合约名称。
调整后完整代码
from bs4 import BeautifulSoup from urllib.request import Request, urlopen url = 'https://bscscan.com/tx/0x86d46163d35626df273bbed53cbdba26959d8ab7eb536af0f526dfa937c75dde' headers = {'User-Agent': 'Mozilla/5.0'} req = Request(url, headers=headers) html = urlopen(req).read() soup = BeautifulSoup(html, 'html.parser') # 调整区块号获取逻辑 block_num = soup.find('a', id='ContentPlaceHolder1_spanBlockNumber').text.strip() block_conf = soup.find('span', class_='u-label u-label--xs u-label--badge-in u-label--secondary ml-1').text.strip() blockconf = f"{block_num} {block_conf}" fromaddr = soup.find('span', id='spanFromAdd').text # 调整接收地址获取逻辑 toaddr = soup.find('span', id='spanToAdd').a.get_text(strip=True) transcount = soup.find('span', class_='badge badge-pill badge-secondary align-midle').text val = soup.find('span', class_='u-label u-label--value u-label--secondary text-dark rounded mr-1').text transfee = soup.find('span', id='ContentPlaceHolder1_spanTxFee').text print ("Block Number: ", str(blockconf)) print("From Address: " + str(fromaddr)) print ("To Address: " + str(toaddr)) print ("Transfer Count: " + str(transcount)) print("Value: " + str(val)) print("Transaction Fee: " + str(transfee))
运行输出
Block Number: 9428747 792 Block Confirmations From Address: 0xf3b1c9f3bbc351d90c7a539b26d789af57c869f7 To Address: PancakeSwap: Router v2 Transfer Count: 8 Value: 0 BNB Transaction Fee: 0.00529533 BNB ($1.60)
内容的提问来源于stack exchange,提问作者rbutrnz
相关产品推荐
相关产品推荐

