版权声明:可以转载奥 https://blog.csdn.net/Jiajikang_jjk/article/details/82831847
python 数据存储
数据存储的方式
对于python的文件存储具有很多形式,主要的有TXT,JSON,CSV格式,除此之外还可以保存到数据库中
思路分析
1:txt存储
目的:保存知乎上面的"发现"页面的“热门话题”部分
使用requests获取网页源代码------>然后使用pyquery解析库进行解析
a: 获取源码
b: 使用pyquery解析
<div class="explore-tab" id="js-explore-tab">
<a class="zg-anchor-hidden" name="daily-hot"></a>
<a class="zg-anchor-hidden" name="monthly-hot"></a>
<ul class="tab-navs clearfix">
<li class="tab-nav"><a class="anchor" href="#daily-hot" data-za-c="explore" data-za-a="visit_explore_daily_trendings" data-za-l="explore_daily_trendings">今日最热</a></li>
<li class="tab-nav"><a class="anchor" href="#monthly-hot" data-za-c="explore" data-za-a="visit_explore_monthly_trendings" data-za-l="explore_monthly_trendings">本月最热</a></li>
</ul>
question = item.find('h2').text()# 问题
author = item.find('author-link-line').text()# 作者
answer = pq(item.find('.content').html()).text()# 答案
c:问题,回答者,答案全文
d:使用open()打开一个文件文本,获取一个文件操作对象file,
e:write()将提供的内容写入文件,
f: 调用close()方法关闭
补充说明:
打开方式
1:r 只读方式
2:rb 二进制只读方式打开一个文件
3:r+ 读写方式打开一个文件
4:rb+ 二进制读写方式打开一个文件
5:w 写入方式打开一个文件
6:wb 二进制写入方式
7:w+ 读写方式
8:wb+ 二进制读写格式
9:a 追加方式打开一个文件
10:ab 二进制追加方式
11:a+ 读写方式打开
12:ab+ 二进制追加方式
2: json数据存储分析
json进行数据存储的时候:以数组和对象进行
[{
},
{
},
''''''
]
load(),dumps()将json文件字符互相换转化为json对象
indent=2 缩进两个字符
str= "json形式的字符串"
data = json.load(str)
print(data)
print(type(data))
3:csv
一种逗号分隔值或者字符分割值
可将数据写入到excel中
write= csv.writer(csvfile)# 初始化写入对象
write.writerow(['id','name','age'])
4:数据库存储
关系型数据库存储,非关系型数据库存储
以mysql为例
1:TXT格式
"""
author:jjk
datetime:2018/9/24
coding:utf-8
project name:Pycharm_workstation
Program function: txt存储
"""
import requests
from pyquery import PyQuery as pq
# 爬取的网址
url = 'https://www.zhihu.com/explore'
# 响应头
headers = {
'user-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Mobile Safari/537.36'
}
html = requests.get(url,headers=headers).text
doc = pq(html)
# print(doc)# 获取网页源码
# 当前节点class=explore-tab,然后在当前节点explore-tab下的当前节点:fee-item的内容,使用items()遍历
items = doc('.explore-tab .feed-item').items()
for item in items:
question = item.find('h2').text()# 问题
author = item.find('author-link-line').text()# 作者
answer = pq(item.find('.content').html()).text()# 答案
with open('explore.txt','a',encoding='utf-8') as file:
file.write('\n'.join([question, author, answer])) # 换行使用.join()进行连接
file.write('\n' + '=' * 5 + '\n') # 空出5行
file.close()
最终以txt格式进行保存
2:JSON格式
"""
author:jjk
datetime:2018/9/24
coding:utf-8
project name:Pycharm_workstation
Program function: json数据存储
"""
import json
data = [{
'name':'贾继康',
'gender':'male',
'birthder':'1992-2-2'
}]
with open('data.json', 'w') as file:
file.write(json.dumps(data,indent=2,ensure_ascii=False))# 缩进两个字符
3:csv格式
"""
author:jjk
datetime:2018/9/24
coding:utf-8
project name:Pycharm_workstation
Program function: csv数据存储
"""
import csv
with open('data.csv','r',encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)
4:数据库
说明:
这里只是针对关系型数据库mysql进行学习了一下
"""
author:jjk
datetime:2018/9/24
coding:utf-8
project name:Pycharm_workstation
Program function: mysql 数据库
"""
import pymysql
db = pymysql.connect(host='localhost',user='root',password='123456',port=3306)# 声明一个连接对象,进行数据库连接
cursor= db.cursor()# 获取mysql的操作游标,利用游标执行SQL语句
cursor.execute('SELECT VERSION()')# 执行查询数据库版本号
data = cursor.fetchone()# fetchone()方法获得第一条数
print('Database version',data)
cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8") # 创建数据库:spiders
db.close()#关闭
这里只是实现了连接数据库,进行创建一个自定义的数据库,下一步就是进行插入语句的操作