You need to enable JavaScript to run this app. 为何使用BeautifulSoup获取维基表格的data-sort-value属性会返回None
优惠活动
大模型
产品
解决方案
定价
更多

为何使用BeautifulSoup获取维基表格的data-sort-value属性会返回None

爬取返回None列表的原因与修正方案

核心问题原因

  • 存在BeautifulSoup接口参数误用:find()方法的第二个位置参数是class属性筛选的快捷实现(适配Python中class为关键字的限制),你写的ligne.find("td", "data-sort-value")实际逻辑是查找class属性值为"data-sort-value"的<td>标签,并非查找带有data-sort-value自定义属性的目标标签,自然所有匹配结果为None。
  • 存在表格定位偏差:直接抓取页面上第一个wikitable类的表格时,该页面前部的wikitable多为沿革说明、统计备注类的非目标表格,就算参数正确也会定位错数据源。
  • 遍历逻辑未跳过表头:表格第一行为表头行,仅包含<th>表头元素,没有对应的数据<td>,遍历到该行时会返回None。

正确实现代码

import requests
from bs4 import BeautifulSoup as bs

res = requests.get("https://fr.wikipedia.org/wiki/Liste_des_communes_du_Pas-de-Calais")
# 适配法语页面UTF-8编码,避免乱码
res.encoding = "utf-8"
soup = bs(res.text, "html.parser")
# 定位到带排序功能的人口数据目标表格
tableau = soup.find("table", class_="wikitable sortable")
lignes = tableau.find_all("tr")

population_list = []
# 跳过第一行表头数据
for ligne in lignes[1:]:
    # 匹配带有data-sort-value属性的单元格
    target_cell = ligne.find("td", attrs={"data-sort-value": True})
    # 过滤空值,避免None混入列表
    if target_cell:
        pop_value = target_cell["data-sort-value"]
        population_list.append(pop_value)
        print(pop_value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 13:36:03