gpt4 book ai didi

python - 使用 beautifulSoup4 解析 html 表时出现属性错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:15:10 30 4
gpt4 key购买 nike

我正在尝试使用 BeautifulSoup4 从表格中获取排名、国家/地区名称、人口、密度和面积。当我使用 table.find_all('tr') 时,它返回以下错误:

AttributeError: 'ResultSet' object has no attribute 'find_all'

我猜问题根源是:

table = soup.find_all("table",attrs={"class":"wikitable sortable"}) 

这会返回一个元素的列表,其中包含tbody,而且我无法循环遍历它!

import requests 
from bs4 import BeautifulSoup
import re

r = requests.get("https://fr.wikipedia.org/wiki/Liste_des_pays_par_densit%C3%A9_de_population")

soup = BeautifulSoup(r.content, "html.parser")
table = soup.find_all("table",attrs={"class":"wikitable sortable"})
for i in table.find_all('tr'):

tds=i.find_all('td', string=True)
tds_string = str(tds)
specifications = str(re.sub("<.+?>"," ",tds_string))
print(specifications)

表格格式如下:

<table class="wikitable sortable" style="text-align:right">
<tbody><tr>
<th scope="col">Rang
</th>
<th scope="col">Pays <i>(ou territoire)</i>
</th>
<th scope="col">Densité (<abbr class="abbr" title="habitants">hab.</abbr>/km<sup>2</sup>)
</th>
<th scope="col">Population (<abbr class="abbr" title="habitants">hab.</abbr>)
</th>
<th scope="col">Superficie (km<sup>2</sup>)
</th></tr>
<tr>
<td>1</td>
<td align="left"><span class="datasortkey" data-sort-value="Monaco"><span class="flagicon"><a class="image" href="/wiki/Fichier:Flag_of_Monaco.svg" title="Drapeau de Monaco"><img alt="Drapeau de Monaco" class="noviewer thumbborder" data-file-height="600" data-file-width="750" decoding="async" height="16" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Flag_of_Monaco.svg/20px-Flag_of_Monaco.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Flag_of_Monaco.svg/30px-Flag_of_Monaco.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Flag_of_Monaco.svg/40px-Flag_of_Monaco.svg.png 2x" width="20"/></a> </span><a href="/wiki/Monaco" title="Monaco">Monaco</a></span></td>
<td>18 866</td>
<td>38 109</td>
<td>2,02
</td></tr>
<tr>
<td>2</td>
<td align="left"><span class="datasortkey" data-sort-value="Singapour"><span class="flagicon"><a class="image" href="/wiki/Fichier:Flag_of_Singapore.svg" title="Drapeau de Singapour"><img alt="Drapeau de Singapour" class="noviewer thumbborder" data-file-height="2880" data-file-width="4320" decoding="async" height="13" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Singapore.svg/20px-Flag_of_Singapore.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Singapore.svg/30px-Flag_of_Singapore.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/48/Flag_of_Singapore.svg/40px-Flag_of_Singapore.svg.png 2x" width="20"/></a> </span><a href="/wiki/Singapour" title="Singapour">Singapour</a></span></td>
<td>7 829</td>
<td>5 423 148</td>
<td>692,7
</td></tr>
<tr>
.....

最佳答案

find_all 返回一个列表。您可能想要使用 find 它将返回一个表。或者在每个表上调用 find_all('tr') 迭代列表。

关于python - 使用 beautifulSoup4 解析 html 表时出现属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54773247/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com