上节我们已经爬取到想要的数据,但是好学的你肯定不满足于此,数据爬到了,那我们如何将其保存下来呢?接下来,我们将介绍如何把爬到的数据格式化输出并保存。
1.格式化输出
可以看到,我们采集出来的数据是以列表形式输出的,接下来我们将代码和名称分开输出。首先创建两个新空列表,分别用于存放区划代码和名称:
city_id = []
city_name = []
2.装载数据
通过循环分别取出区划代码和名称,并添加到对应列表中:
m = len(citys) #获取原列表长度
while m > 0:
city_name.append(citys[m-1].string)
city_id.append(citys[m-2].string)
# print(citys[m-1].string)
m = m - 2
3.结构化数据并保存
将列表转化成数据框,这里需要引入pandas模块:
import pandas as pd
# 将列表转化成数据框
city_info = pd.DataFrame({'id': city_id, 'name': city_name, 'url': city_urls})
print(city_info)
# 将数据保存到桌面
city_info.to_csv('C:/Users/SYH/Desktop/city_info.csv', index=False)
4.完整代码
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 目标网页
url_pro = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/41.html'
# 获取响应并解析
res = requests.get(url=url_pro).content
soup = BeautifulSoup(res, 'html.parser')
# 获取数据
citys = soup.select('.citytr a')
# 创建列表以保存数据
city_id = []
city_name = []
# 装载数据
m = len(citys)
while m > 0:
city_name.append(citys[m-1].string)
city_id.append(citys[m-2].string)
# print(citys[m-1].string)
m = m - 2
# 结构化数据并保存
city_info = pd.DataFrame({'id': city_id, 'name': city_name, 'url': city_urls})
city_info.to_csv('C:/Users/SYH/Desktop/city_info.csv', index=False)
到此,数据的采集过程你已经基本掌握,其间你会发现,单独爬虫的代码没有几行,你甚至可以死记硬背,但是你总不会只是把数据爬出来看看这么简单,肯定是需要将爬出的数据再做更多的处理,例如结构化输出、保存、分析、可视化等等……这些,就得自己去补充了。
数据的处理,着重了解一下pandas及Python的一些语法基础(如循环),要想爬取更多的数据或是元素,还需简单了解一下HTML基础……抛砖引玉,期待你更好的作品!
下节,我们将介绍如何循环采集下一级(县级)数据!