【python】数据存储

版权声明:可以转载奥 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()#关闭

在这里插入图片描述
这里只是实现了连接数据库,进行创建一个自定义的数据库,下一步就是进行插入语句的操作

猜你喜欢

转载自blog.csdn.net/Jiajikang_jjk/article/details/82831847