Python使用BS4抓取poocoin.app网页表格报AttributeError如何解决
报错原因
- 代码存在工具混用的逻辑问题:你已经启动了Selenium但未使用它获取动态渲染后的页面内容,反而用
requests直接发起GET请求拉取静态HTML - Poocoin的页面数据是JavaScript动态加载生成的,
requests拉取到的原始静态页面里根本不存在你要查找的table元素,因此soup.find()返回None,对空值调用find方法自然抛出AttributeError
修复后的代码
直接使用Selenium获取渲染完成的页面源码传给BeautifulSoup即可,无需额外调用requests:
from selenium import webdriver from bs4 import BeautifulSoup import time # 初始化Chrome浏览器 browser = webdriver.Chrome('C://Python38/chromedriver') url = "https://poocoin.app/rugcheck/0xe56842ed550ff2794f010738554db45e60730371/top-holders" browser.get(url) # 增加等待时间确保页面动态内容加载完成,也可替换为显式等待提升效率 time.sleep(3) # 直接读取Selenium渲染后的页面源码进行解析 soup = BeautifulSoup(browser.page_source, 'lxml') t = soup.find('table', class_='table table-bordered table-condensed text-small') # 增加非空判断避免偶发加载失败导致报错 if t: trs = t.find('tbody').find_all('tr') for tr in trs[:10]: print(list(tr.stripped_strings)) else: print("未找到目标表格,请检查页面加载情况或元素选择器是否正确") browser.quit()
可选优化点
- 把固定时长的
time.sleep替换为Selenium显式等待,指定等待目标表格加载完成后再执行后续逻辑,运行效率更高、稳定性更好 - 可以定期核对页面元素的类名是否变更,站点前端迭代可能会修改元素class属性,导致选择器失效
内容的提问来源于stack exchange,提问作者rbutrnz
相关产品推荐
相关产品推荐

