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

使用BS4爬取HTML表格时部分td元素返回None的问题

解决BS4无法获取部分td元素内容返回None的问题

下面是几个常见的原因和对应的解决方法,你可以逐一排查:

1. 目标内容是动态加载的

很多现代网站会用JavaScript动态渲染表格数据,BS4只能解析静态HTML。如果你的目标td内容在页面加载后才通过JS生成,直接用requests+BS4爬取的静态源码里根本没有这些数据,自然会返回None。

解决办法:

  • 使用Selenium或Playwright这类工具模拟浏览器加载页面,获取完全渲染后的HTML:
from selenium import webdriver
from bs4 import BeautifulSoup

# 初始化浏览器(需要对应浏览器的驱动)
driver = webdriver.Chrome()
driver.get("你的目标网页URL")

# 获取渲染后的页面源码
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'lxml')

# 之后正常解析表格
rows = soup.find_all('tr')
for row in rows:
    tds = row.find_all('td')
    if tds:
        # 按需提取每个td的内容,比如示例中的第五个td(索引4)
        if len(tds) >=5:
            change_percent = tds[4].get_text(strip=True)
            print(change_percent)

driver.quit()

2. 选择器定位错误

你可能使用了错误的选择器来定位td元素,比如误判了td的位置、class或层级关系。比如示例里的变化值和百分比是嵌套在<span>标签里的,如果直接用错误的选择器找td,或者没深入到span层,都可能拿不到内容。

解决办法:

  • 先打印出整个表格的HTML结构,确认td的位置和嵌套关系;
  • 使用find_all('td')遍历所有td,再通过索引或内部标签提取内容:
from bs4 import BeautifulSoup

# 示例HTML
sample_html = '''<tr> <td><b>EICHERMOT</b></td> <td>28-Mar-18</td> <td>28,079.75</td> <td><span class="gr_11" style="color:#0F6C02">0.45</span></td> <td><span class="gr_11" style="color:#0F6C02">0.00%</span></td></tr>'''
soup = BeautifulSoup(sample_html, 'lxml')

row = soup.find('tr')
tds = row.find_all('td')

# 提取第四个td里的span内容
change_value = tds[3].find('span').get_text(strip=True)
# 提取第五个td里的span内容
change_percent = tds[4].find('span').get_text(strip=True)

print(f"变化值:{change_value},变化百分比:{change_percent}")

3. HTML结构不规范,解析器处理异常

有些网站的HTML存在语法错误(比如未闭合标签),BS4默认的html.parser解析器对这类不规范代码的兼容性较差,可能导致部分元素解析失败,返回None。

解决办法:

  • 更换更健壮的解析器,比如lxml或html5lib(需要先安装:pip install lxml html5lib):
# 使用lxml解析器
soup = BeautifulSoup(html_content, 'lxml')
# 或者使用html5lib
soup = BeautifulSoup(html_content, 'html5lib')

快速排查步骤

  • 先打印你爬取到的页面源码(response.text),搜索目标td的内容,确认是否存在于静态源码中;
  • 检查你的选择器逻辑,确保定位到正确的td元素;
  • 尝试更换解析器,排除解析兼容性问题;
  • 如果静态源码中没有目标内容,就用浏览器渲染工具获取动态加载后的页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:25:19