为什么数据排序值 return None?

Why do data-sort-value return None?

我正在抓取维基百科表格,并试图从该网站获取一些法国城市的人口:https://fr.wikipedia.org/wiki/Liste_des_communes_du_Pas-de-Calais

现在,我不想使用 dataframes,我想 select 我的项目直接使用标签。但是当我要求程序打印属性“data-sort-value”的值时,它 returns 一个 None 的列表,而在网站的 HTML 代码中,属性是人口数字。为什么?

这是我的代码

import requests
from bs4 import BeautifulSoup as bs

res=requests.get("https://fr.wikipedia.org/wiki/Liste_des_communes_du_Pas-de-Calais")
soup=bs(res.text,"html.parser")
tableau=soup.find('table','wikitable')
lignes = tableau.findAll("tr")

liste=[]
for ligne in lignes:
    nombre=ligne.find("td", "data-sort-value")
    print(nombre)
    liste.append(nombre)

当您执行 nombre = ligne.find("td", "data-sort-value") 时,您正在寻找标签 data-sort-value,但它不是标签,而是 HTML 属性。如果你想搜索 <td> 其中有 data-sort-value,你可以使用 CSS 选择器 td[data-sort-value].

要使用 CSS 选择器,请使用 select_one() instead of find():

...
for ligne in lignes:
    nombre = ligne.select_one("td[data-sort-value]")
    if nombre:
        print(nombre.text)
        liste.append(nombre)