gpt4 book ai didi

python - 使用 python 抓取 Wiki

转载 作者:行者123 更新时间:2023-12-01 04:09:58 25 4
gpt4 key购买 nike

我正在尝试抓取此维基百科页面 https://en.wikipedia.org/wiki/Minister_of_Agriculture_(India) 的表格中存储的数据。 。但是我无法抓取完整数据这是我到目前为止所写的:

from bs4 import BeautifulSoup
import urllib2
wiki = "https://en.wikipedia.org/wiki/Minister_of_Agriculture_(India)"
header = {'User-Agent': 'Mozilla/5.0'} #Needed to prevent 403 error on Wikipedia
req = urllib2.Request(wiki,headers=header)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page,"html.parser")

name = ""
pic = ""
strt = ""
end = ""
pri = ""
x=""
table = soup.find("table", { "class" : "wikitable" })
for row in table.findAll("tr"):
cells = row.findAll("td")

if len(cells) == 8:
name = cells[0].find(text=True)
print name`

得到的输出是:Jairamdas Daulatram、Surjit Singh Barnala、Rao Birendra Singh

而输出应该是:Jairamdas Daulatram 后跟 Panjabrao Deshmukh

最佳答案

你读过原始 html 了吗?

由于某些单元格跨越多行(例如政党),因此大多数行中没有 8 个单元格。

因此您不能执行 if len(cells) == 8并期望它能够发挥作用。想想这条线的目的是什么。如果要忽略标题行,那么您可以将其替换为 if len(cells) > 0因为所有标题单元格都是 <th>标签(因此不会出现在您的列表中)。

页面来源(显示您的问题):

  <tr>
<td><a href="/wiki/Jairamdas_Daulatram" title="Jairamdas Daulatram">Jairamdas Daulatram</a></td>
<td></td>
<td>1948</td>
<td>1952</td>
<td rowspan="6"><a href="/wiki/Indian_National_Congress" title="Indian National Congress">Indian National Congress</a></td>
<td rowspan="6" bgcolor="#00BFFF" width="4px"></td>
<td rowspan="3"><a href="/wiki/Jawaharlal_Nehru" title="Jawaharlal Nehru">Jawaharlal Nehru</a></td>
<td><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span>[</span>1<span>]</span></a></sup></td>
</tr>
<tr>
<td><a href="/wiki/Panjabrao_Deshmukh" title="Panjabrao Deshmukh">Panjabrao Deshmukh</a></td>
<td></td>
<td>1952</td>
<td>1962</td>
<td><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span>[</span>2<span>]</span></a></sup></td>
</tr>

关于python - 使用 python 抓取 Wiki,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35089895/

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