python 获取页面表格数据存放到csv中的方法

  • Post category:Python

下面是详细讲解“python获取页面表格数据存放到csv中的方法”的完整实例教程:

1. 确定目标页面和表格数据的位置

首先需要确定你要爬取数据的目标页面和表格数据的位置。可以通过查看目标页面的源代码找到表格数据所在的HTML标签,通常表格会使用<table>标签。

2. 安装依赖库

使用Python爬虫获取页面表格数据需要用到以下依赖库:

  • requests: 发送HTTP请求,获取页面数据。
  • pandas: 将表格数据转化为DataFrame格式。
  • BeautifulSoup: 解析HTML页面数据,获取表格数据。
  • csv: 将表格数据存储为CSV文件格式。

可以使用以下命令安装这些依赖库:

pip install requests
pip install pandas
pip install beautifulsoup4

3. 使用requests获取页面数据

使用requests库发送HTTP请求,获取目标页面的HTML源码。例如,获取“https://www.example.com/table.html”页面的HTML源码的代码如下:

import requests

url = 'https://www.example.com/table.html'
response = requests.get(url)
html = response.content.decode('utf-8')

4. 使用BeautifulSoup解析HTML页面数据

使用BeautifulSoup库解析HTML页面数据,找到目标表格数据所在的HTML标签。例如,获取目标HTML页面内第一个表格数据的代码如下:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, features='html.parser')
table = soup.find_all('table')[0]

5. 使用pandas将表格数据转化为DataFrame格式

使用pandas库将表格数据转化为DataFrame格式,方便后续操作。例如,将目标表格数据转化为DataFrame格式的代码如下:

import pandas as pd

df = pd.read_html(str(table))[0]

6. 使用csv将表格数据存储为CSV文件格式

使用csv库将表格数据存储为CSV文件格式,方便后续数据分析。例如,将表格数据存储为“table.csv”文件的代码如下:

import csv

with open('table.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(df.columns)
    for index, row in df.iterrows():
        writer.writerow(row)

示例

下面介绍两个示例,演示如何使用Python获取页面表格数据存放到CSV中。

示例1

爬取国家统计局的全国城镇非私营单位就业人员数量统计数据(http://data.stats.gov.cn/easyquery.htm?cn=E0103)。

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

url = 'http://data.stats.gov.cn/easyquery.htm?cn=E0103'

response = requests.get(url)
html = response.content.decode('utf-8')

soup = BeautifulSoup(html, features='html.parser')
table = soup.find_all('table')[0]

df = pd.read_html(str(table))[0]

with open('table.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(df.columns)
    for index, row in df.iterrows():
        writer.writerow(row)

示例2

爬取维基百科的2020年世界人口普查数据(https://en.wikipedia.org/wiki/2020_United_States_Census)。

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

url = 'https://en.wikipedia.org/wiki/2020_United_States_Census'

response = requests.get(url)
html = response.content.decode('utf-8')

soup = BeautifulSoup(html, features='html.parser')
table = soup.find_all('table', {'class': 'wikitable sortable'})[0]

df = pd.read_html(str(table))[0]

with open('table.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(df.columns)
    for index, row in df.iterrows():
        writer.writerow(row)

这两个示例都是将目标页面的第一个表格数据获取,并将结果存放到“table.csv”文件中。你可以根据自己的需要修改代码获取更多的表格数据。