1. 程式人生 > >【python】資料儲存

【python】資料儲存

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()#關閉

在這裡插入圖片描述 這裡只是實現了連線資料庫,進行建立一個自定義的資料庫,下一步就是進行插入語句的操作