将Wikipedia表格抓取到熊猫数据框

问题描述 投票:0回答:5

我需要将Wikipedia表刮到熊猫数据框并创建三列:PostalCode,自治市镇和邻里。

https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M

这是我使用的代码:

import requests
website_url = requests.get('https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M').text
from bs4 import BeautifulSoup
soup = BeautifulSoup(website_url,'lxml')
print(soup.prettify())

My_table = soup.find('table',{'class':'wikitable sortable'})
My_table

links = My_table.findAll('a')
links

Neighbourhood = [ ]

for link in links:
    Neighbourhood.append(link.get('title'))

print (Neighbourhood)

import pandas as pd

df = pd.DataFrame([])df ['PostalCode','Borough','Neighborhood'] =社区

df

它返回:

(PostalCode, Borough, Neighborhood)

0北约克1帕克伍德2北约克3维多利亚村4多伦多市中心5海滨(多伦多)多伦多市中心67摄政公园北约克8号

我不知道如何从Wikipedia表格中选择邮政编码和附近地区。

谢谢

python pandas wikipedia
5个回答
0
投票

提供错误消息。通过查看它,首先您具有df ['Neighbourhoods]] = Neighbourhoods >>,其中您的列表名称为Neighborhoods >>。

您有两个小错误:

[df = pd.dataframe()应该是df = pd.DataFrame([])

您第二次也将Neighborhoods拼写为Neighbourhoods

您可能还需要将soup = BeautifulSoup(website_url,'lxml')更改为soup = BeautifulSoup(website_url,'xml'),但是如果您不知道确切的错误消息,我们将为您提供更多帮助。

代替使用

df = pd.dataframe()
df['Neighbourhoods'] = Neighbourhoods

您可以使用

df['Neighbourhoods'] = pd.Series(Neighbourhoods)

这将解决您的错误,并使用pd.Series(listname)类似地添加新列,或者您可以使用此代码提供包含PostalCode,Borough和Neighborhoods的列表的列表

df = pd.Dataframe(list_of_lists)

熊猫允许您在一行代码中完成它:

df = pd.read_html('https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M')[0]

enter image description here

似乎您只是在这里选择了其中一列:

links = My_table.findAll('a')

您应该寻找'tr'而不是'a',因为这表示表中有新行。

然后您应该使用for循环来填充列表列表,此代码应该起作用:

v = []
 for tr in values:
   td = tr.find_all('td')
   row = [i.text for i in td]
   v.append(row)
 df = pd.DataFrame.from_records(v)

0
投票

您有两个小错误:


0
投票

代替使用


0
投票

熊猫允许您在一行代码中完成它:


0
投票

似乎您只是在这里选择了其中一列:

© www.soinside.com 2019 - 2024. All rights reserved.