如何在网上抓取维基百科信息框表



我正在尝试抓取一个Wiki信息框,并将数据放入一个字典中,其中信息框的第一列是键,第二列是值。我还必须忽略所有没有2列的行。我很难理解如何获取与密钥相关联的值。我试图抓取的维基百科页面https://en.wikipedia.org/w/index.php?title=Titanic&oldid=981851347,其中我正试图从第一个信息框中提取信息。

结果应该如下所示:{"名称":"皇家邮轮泰坦尼克号"、"所有者":"白星线"、"运营商":"白星线","注册港":"英国利物浦"、"航线":"南安普顿至纽约市"…}

以下是我尝试过的:

import requests
from bs4 import BeautifulSoup
def get_infobox(url):
response = requests.get(url)
bs = BeautifulSoup(response.text)
table = bs.find('table', {'class' :'infobox'})
result = {}
row_count = 0
if table is None:
pass
else:
for tr in table.find_all('tr'):
if tr.find('th'):
pass
else:
row_count += 1
if row_count > 1:
if tr is not None:
result[tr.find('td').text.strip()] = tr.find('td').text
return result
print(get_infobox("https://en.wikipedia.org/w/index.php?title=Titanic&oldid=981851347"))

如有任何帮助,我们将不胜感激!

如果您不需要或不想使用刮刀,您可以使用API

https://www.mediawiki.org/wiki/API:Main_page/de

英语终点为https://en.wikipedia.org/w/api.php

例如:

https://en.wikipedia.org/w/api.php?action=query&prop=修订&rvprop=内容&format=json&title=泰坦尼克号&rvsection=0

最新更新