我们获取到数据之后,通常不是只输出一下过过眼瘾,而是存储下来,简单介绍一下常用的方式
保存为csv文件
csv文件的操作类似txt文本,但它显示出来的效果类似Excel表格,是很好用的一种形式。
csv文件使用英文逗号
作为分隔符号,注意获取的数据有没有英文逗号。除此之外,要记得写入换行符嗷!
以我们的例子为例
import requests
import re
count=0
with open('李清照诗词集.csv','w',encoding='utf-8') as fp:
for i in range(1,12):
print('正在爬取第%d页'%i)
url='https://so.gushiwen.org/authors/authorvsw.aspx?page='+str(i)+'&id=9cb3b7c0e4a0'
response=requests.get(url).text
# print(response)
poem_title_list=re.findall('<textarea style=" background.*id=.*">?(.*》?)https',response)[:-1]
count+=len(poem_title_list)
for j in poem_title_list:
# 字符串处理
data=j.split('——宋代·李清照')
data.insert(1,',')
data.reverse()
# 添加换行符
data.append('\n')
fp.writelines(data)
print('共%d首诗词'%count)
保存为Excel文件
使用pandas
pandas类似于低配版的R语言,对数据处理与操作十分友好,我们可以直接使用pandas读写Excel,方法如下
#110首
import requests
import pandas as pd
import re
count=0
all_poems = []
for i in range(1,12):
print('正在爬取第%d页'%i)
url='https://so.gushiwen.org/authors/authorvsw.aspx?page='+str(i)+'&id=9cb3b7c0e4a0'
response=requests.get(url).text
# print(response)
poem_title_list=re.findall('<textarea style=" background.*id=.*">?(.*》?)https',response)[:-1]
count+=len(poem_title_list)
for j in poem_title_list:
# 字符串处理
data=j.split('——宋代·李清照')
all_poems.append({"title":data[1],'text':data[0]})
print(data)
print('共%d首诗词'%count)
# 转化为pandas数据(二维数据)
df = pd.DataFrame(all_poems)
# 保存为Excel
df.to_excel("李清照诗集.xlsx",index=False)
建议大家保存的时候后缀写xlsx,因为pandas是有依赖库的,当为xls的时候调用xlwt库,为xlsx时调用openpyxl库。
当写入大量数据的时候,xlwt会报错,openpyxl库则可以接受!
- pandas构造DataFrame还有另外的形式,不过不建议使用
- 最后导出Excel的时候,index=False表示不写入索引,大家可以改成True看看有什么变化
不使用pandas
那就类似自动化办公了,上面说了,pandas库的依赖是xlwt或openpyxl,我们可以直接学习这两个库的操作,当然,教程我肯定是写了的点击跳转
保存到数据库中
因为基础的增删改查语法都差不多,我建议先学如何使用SQLit,这是python可以直接操作的,不需要再下载别的软件(有些人下安装mysql会高血压…)
关于如何使用基础的增删改查语句,我当然是写了教程点击跳转