首页 > 解决方案 > 如何使用 BeautifulSoup 将抓取列表转换为数据框?

问题描述

我正在从这个网站上抓取数据:https ://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_M 。使用 BeautifulSoup 并且必须以包含三列的表格格式显示它:邮政编码、自治市镇、邻居。我想将抓取列表从列表转换为数据框,以便我可以删除一些行并对数据框进行进一步操作。

得到以下错误信息:

错误信息

下面是代码:

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)

标签: pythonlistdataframe

解决方案


read_html通过直接在页面上使用内置的 pandas 可以为自己节省不少时间和精力

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]我们数据框的元素。

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


推荐阅读