You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python获取指定URL中的表格数据?代码报错求助

Python爬虫报错解决:获取网站账户数据失败

问题代码

import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0",}

url = "https://mine.com/blockexplorer/account/GDOI7OSBDM3WPXWFT3RUPGGLV3Y5MKZJKNN4CZMQITUWWQRUF5IXCLZJ"
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, "lxml")
t = soup.find("table", class_="table")
trs = t.find("tbody").find_all("tr")

for tr in trs:
    print(list(tr.stripped_strings))

报错信息

Traceback (most recent call last):
  File "C:/Users/es***a/Desktop/Pi Scripts/pi-temp1.py", line 14, in <module>
    trs = t.find("tbody").find_all("tr")
AttributeError: 'NoneType' object has no attribute 'find'

期望输出

Public Key: GDOI7OSBDM3WPXWFT3RUPGGLV3Y5MKZJKNN4CZMQITUWWQRUF5IXCLZJ
Balance: 26.9231952

解决思路与修正方案

报错核心原因

soup.find("table", class_="table")返回None,说明requests抓取的静态HTML里不存在你指定的表格。大概率是目标网站的账户数据通过JavaScript动态渲染,静态页面中没有加载这些内容;也可能是你使用的选择器和页面实际结构不匹配。

方案1:用Selenium处理动态渲染页面

如果数据是JS动态加载的,用Selenium模拟浏览器完整加载页面后再提取数据:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from bs4 import BeautifulSoup

# 配置无头浏览器,不显示窗口
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(options=options)

url = "https://mine.com/blockexplorer/account/GDOI7OSBDM3WPXWFT3RUPGGLV3Y5MKZJKNN4CZMQITUWWQRUF5IXCLZJ"
driver.get(url)
soup = BeautifulSoup(driver.page_source, "lxml")

# 请根据页面实际结构调整选择器,以下为示例
public_key_elem = soup.find("div", class_="account-public-key")
balance_elem = soup.find("span", class_="account-balance")

if public_key_elem and balance_elem:
    print(f"Public Key: {public_key_elem.text.strip()}")
    print(f"Balance: {balance_elem.text.strip()}")

driver.quit()

方案2:直接请求网站API接口

打开浏览器开发者工具(F12),切换到Network标签刷新页面,找到返回账户数据的XHR/Fetch接口,直接请求接口获取数据,比爬页面更高效:

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0",
    "X-Requested-With": "XMLHttpRequest"
}

# 替换为实际找到的API接口地址
api_url = "https://mine.com/api/account/GDOI7OSBDM3WPXWFT3RUPGGLV3Y5MKZJKNN4CZMQITUWWQRUF5IXCLZJ"
response = requests.get(api_url, headers=headers)
data = response.json()

print(f"Public Key: {data['publicKey']}")
print(f"Balance: {data['balance']}")

注意事项

  • 爬取前请遵守网站的robots.txt规则和使用条款,避免触发反爬限制。
  • 使用Selenium时,确保浏览器驱动版本与本地浏览器版本匹配。

内容的提问来源于stack exchange,提问作者errzoned

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:10:31