python | 爬蟲筆記(五)- 數據存儲

5.1 文件存儲

先用request把源碼獲取,再用解析庫解析,保存到文本

1- txt

文本打開方式:
file = open('explore.txt', 'a', encoding='utf-8') #a表明以追加的方式寫入文本
    file.write('\n'.join([question, author, answer]))
    file.write('\n' + '=' * 50 + '\n')
    file.close()
  r 只讀
  rb 二進制只讀
  r+ 讀寫
  rb+ 二進制讀寫
  w 只用於寫入
  wb 二進制寫入
  w+ 讀寫,存在覆蓋,不存在新建
  a 追加
  a+ 追加讀寫

2- Json

JavaScript 對象標記,經過對象和數組的組合來表示數據,構造簡潔可是結構化程度很是高,它是一種輕量級的數據交換格式。一切皆對象,經常使用的是對象和數組
 
對象 數據結構爲 {key1:value1, key2:value2, ...} 的鍵值對結構
數組 數據結構爲 ["java", "javascript", "vb", ...] 的索引結構

· 一個Json對象javascript

[{
    "name": "Bob",
    "gender": "male",
    "birthday": "1992-10-18"
}, {
     "name": "Selina",
    "gender": "female",
    "birthday": "1995-10-18"
}]
· 讀取Json
loads() 方法將 Json 文本字符串轉爲 Json 對象,能夠經過 dumps()方法將 Json 對象轉爲文本字符串。
data = json.loads(str)
print(data)

讀取json文件
with open('data.json', 'r') as file:
str = file.read()
data = json.loads(str)
print(data)
· 輸出Json

3- CSV

寫入
import csv
with open('data.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
writer.writerow(['id', 'name', 'age'])
    writer.writerows([['10001', 'Mike', 20], ['10002', 'Bob', 22], ['10003', 'Jordan', 21]])

讀取html

import pandas as pd df = pd.read_csv('data.csv') print(df)java

5.2 關係型數據庫

rdb- 二維表存儲;可經過主鍵外鍵關聯

1- MySQL存儲

pymysql
內容包括:鏈接數據庫、建立表、插入數據、刪除、查詢
 
通常流程:
import pymysql
db = pymysql.connect(host='localhost',user='root', password='123456', port=3306)  #connect()方法聲明一個鏈接對象
cursor = db.cursor() 
sql = ''
try:
    cursor.execute(sql, (id, user, age))
    db.commit()
except:
    db.rollback()  #事務回滾,保證數據一致性
db.close()

關係型數據庫屬性:python

5.3 非關係型數據庫

NoSQL 是基於鍵值對的,並且不須要通過 SQL 層的解析,數據之間沒有耦合性,性能很是高。
細分-
對於爬蟲的數據存儲來講,一條數據可能存在某些字段提取失敗而缺失的狀況,並且數據可能隨時調整,另外數據之間能還存在嵌套關係,所以多采用NoSQL。經常使用的是MongoDB和Redis

1- MongoDB 

在 MongoDB 中,每條數據其實都有一個 _id 屬性來惟一標識,若是沒有顯式指明 _id,MongoDB 會自動產生一個 ObjectId 類型的 _id 屬性。insert() 方法會在執行後返回的 _id 值。
 

##本系列內容爲《python3爬蟲開發實戰》學習筆記。本系列博客列表以下:mysql

(零)學習路線sql

(一)開發環境配置數據庫

(二)爬蟲基礎json

(三)基本庫使用數組

(四)解析庫使用數據結構

(五)數據存儲

(六)Ajax數據爬取

(七)動態渲染頁面爬取Selenium

持續更新...

對應代碼請見:..

相關文章
相關標籤/搜索