如何使用BeautifulSoup将抓取列表转换为数据帧?

时间:2019-05-02 19:15:48

标签: python list dataframe

我正在从以下网站抓取数据:https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M。使用BeautifulSoup,并且必须以表格格式将其显示为三列:邮政编码,自治市镇,邻居。我想将抓取列表从列表转换为数据框,以便删除一些行并对该数据框做进一步的处理。

获取以下错误消息:

error message

下面是代码:

import pandas as pd 

import numpy as np

import requests

from tabulate import tabulate

from bs4 import BeautifulSoup

url = requests.get("https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M")

soup = BeautifulSoup(url.content,'lxml')

print(soup.prettify())

table = soup.find_all('table')[0]

df = pd.read_html(str(table))

df1 = pd.DataFrame.from_items(df)

1 个答案:

答案 0 :(得分:1)

直接在页面上使用内置的read_html熊猫可以节省大量时间和精力

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

df.head()

    0       1       2
0   Postcode    Borough Neighbourhood
1   M1A Not assigned    Not assigned
2   M2A Not assigned    Not assigned
3   M3A North York  Parkwoods
4   M4A North York  Victoria Village

请注意,read_html本身将返回在页面上找到的所有表的列表作为数据框,因此将其索引以获取数据框的[0]元素。

我留给您根据需要进行调整以修复列标题