Skip to main content
 首页 » 编程设计

python之使用 python : can't get a column 从维基百科中抓取表格

2025年05月04日21Leo_wl

我正在尝试从 Wikipedia 中抓取一张表格

<tr> 
  <td>1</td> 
  <td><span class="nowrap"><span class="datasortkey" data-sort-value="Etats unis"><span class="flagicon"><a class="image" href="/wiki/Fichier:Flag_of_the_United_States.svg" title="Drapeau des États-Unis"><img alt="Drapeau des États-Unis" class="noviewer thumbborder" data-file-height="650" data-file-width="1235" height="11" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/20px-Flag_of_the_United_States.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/30px-Flag_of_the_United_States.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Flag_of_the_United_States.svg/40px-Flag_of_the_United_States.svg.png 2x" width="20" /></a> </span><a href="/wiki/%C3%89tats-Unis" title="États-Unis">États-Unis</a></span></span></td> 
  <td>19 390,60 </td> 
</tr> 

你已经注意到有 3 列,这是我正在使用的代码

A = [] 
B = [] 
C = [] 
 
for row in DataFondMonetaireInt.findAll("tr"): 
    cells = row.findAll("td") 
    if len(cells) == 3: 
        A.append(cells[0].find(text=True)) 
        B.append(cells[1].find(text=True)) 
        C.append(cells[2].find(text=True)) 

它适用于 A 和 C 但不适用于 B,我无法获取国家/地区名称(在示例中:Etats Unis)

为什么不起作用?

提前谢谢你,

请您参考如下方法:

使用 .text 而不是 .find(text=True)

DataFondMonetaireInt = BeautifulSoup(html_text, "html.parser") 
 
A = [] 
B = [] 
C = [] 
 
for row in DataFondMonetaireInt.findAll("tr"): 
    cells = row.findAll("td") 
    if len(cells) == 3: 
        A.append(cells[0].text) 
        B.append(cells[1].text.strip()) 
        C.append(cells[2].text)