为什么数据排序值 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)
我正在抓取维基百科表格,并试图从该网站获取一些法国城市的人口: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)