1. 程式人生 > >python | 爬蟲筆記(五)- 數據存儲

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

height iter use jordan rip 輕量 數據存儲 回滾 nosql

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對象

[{
    "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]])

讀取

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

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()

關系型數據庫屬性:

技術分享圖片

5.3 非關系型數據庫

NoSQL 是基於鍵值對的,而且不需要經過 SQL 層的解析,數據之間沒有耦合性,性能非常高。 細分- 技術分享圖片 對於爬蟲的數據存儲來說,一條數據可能存在某些字段提取失敗而缺失的情況,而且數據可能隨時調整,另外數據之間能還存在嵌套關系,因此多采用NoSQL。常用的是MongoDB和Redis

1- MongoDB

在 MongoDB 中,每條數據其實都有一個 _id 屬性來唯一標識,如果沒有顯式指明 _id,MongoDB 會自動產生一個 ObjectId 類型的 _id 屬性。insert() 方法會在執行後返回的 _id 值。 技術分享圖片 技術分享圖片

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

(零)學習路線

(一)開發環境配置

(二)爬蟲基礎

(三)基本庫使用

(四)解析庫使用

(五)數據存儲

(六)Ajax數據爬取

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

持續更新...

對應代碼請見:..

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