python - 如何使用 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)
解决方案
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]
我们数据框的元素。
我让您根据需要进行调整以修复列标题
推荐阅读
- c# - Getter 和 Setter 与类方法
- python - 从 Python 2D 列表中删除列的最佳/快速方法
- python - 将带单引号和双引号的str转换为int
- mysql - 如何从 2 个表中选择,并在第一个循环的每 5 行中,显示表 2 中的 1 个项目?
- python - 设置规则以将文本数据导入为 pandas 数据框
- php - 从php数组中检索数据匹配到价格范围内的特定日期
- c# - 单元测试以在控制器方法中捕获异常
- mysql - MYSQL:根据另外两个表的连接计算一个表中的行数
- drupal - 节点的正文内容未显示
- c++ - 指向成员函数的指针与指向数据成员的指针有何不同?