python網路爬蟲(第七篇)——資料儲存
一、儲存在檔案中,包括txt檔案和csv檔案
二、儲存在mysql資料庫中。
基本儲存:儲存至txt或csv
1:儲存至txt:前期內容中使用過,儲存僅需幾行**
with open("檔案路徑及檔名.txt",'讀寫模式')as f: f.write("儲存的資料")
幾種開啟檔案的方式
讀寫方式
可否讀寫
若檔案不存在
寫入方式w寫入
建立覆蓋寫入
w+讀取+寫入
建立覆蓋寫入r讀取
報錯不可寫入
r+讀取+寫入
報錯覆蓋寫入a寫入
建立附加寫入
a+讀取+寫入
建立附加寫入
根據需要,我們可以採用不同的方式開啟檔案。
其中檔名的寫法有三種形式:
1:with open(『c:\\user\\desktop\\title.txt』,』a+』)as f:
2: with open(r『c:\user\desktop\title.txt』,』a+』)as f:
3:with open(『c:/user/desktop/title.txt』,』a+』)as f:
2:把資料儲存至csv
csv(comma-separate values)是逗號分隔值的檔案格式,其檔案以純文字的形式儲存**資料(數字和文字)。csv檔案的每一行都用換行符分隔,列與列之間用逗號分隔 。csv即可用記事本開啟,有可用excel開啟,表現為**形式。這樣可以整齊的看到資料的情況,而txt檔案格式經常遇到變數分隔的問題。
csv的使用分為讀取和寫入兩方面
一、csv的讀取
首先建立乙個csv檔案,如下圖
得到的結果
由此可知csv_reader把每一行資料轉化成了乙個列表(list),列表中從左至右的每個元素是乙個字串。
把資料寫入csv的方法:將變數加入到乙個列表中——使用writerow()方法把乙個列表直接寫入一行中。
import csv
write_list=['666','777','888','999']with open(r'c:\users\86182\desktop\csvtest.csv','w',encoding='utf-8')as f: w=csv.writer(f) w.writerow(write_list)
執行後開啟對應的檔案
二、儲存至資料庫
——mysql資料庫:mysql是一種關聯式資料庫管理系統,使用的是sql語言,是訪問資料常用的標準化語言。關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加寫入和提取的速度,資料的儲存也比較靈活。
關聯式資料庫:建立在關係模型的基礎上的資料庫。好比將「小明的個人資訊和出行記錄」分別放在「資訊表中」和「出行記錄」表中,用小明的資訊「id」作為主關鍵字把兩個表關聯起來。
mysql的基本操作
——命令列
這是乙個命令列的操作
——mysql workbench圖形化介面庫
輸入root密碼後,可以命令列一樣運算元據庫,也可以通過單擊選項進行操作。
此處輸入show databases; 後按ctrl+enter鍵後出結果。
1、建立資料庫:
例如建立網路爬蟲的資料庫,在介面庫輸入
create database scrapying;
按下ctrl+enter後沒報錯就顯示建立了乙個scrapying 的資料庫
建立之後所有的命令都會執行在這個資料庫中,除非切換到另一資料庫(use another;)
2、建立資料表並檢視:
這個剛建立的資料庫什麼都沒有,我們需要在這個scrapying資料庫中建立乙個**(注意建立資料表必須指明每一列資料的名稱和類別):
create table urls(
id int not null auto_increment,
url varchar(1000) not null,
content varchar(4000) not null,
created_time timestamp default current_timestamp,
primary key(id)
describe urls;
執行之後的結果:
上述列表中:建立了四個變數(id、url、content、create_time),int(整型),
auto_increment(屬性為自己增加),primary key(id)將id定義為主鍵。
url和content的類別是可變長度的字串varchar,括號裡的數字代表長度的最大值,not null 表示url和content不能為空,create_time為該資料新增的時間,不需要設定,它會自動根據當時的時間填入。
3、在資料表中插入資料
insert into urls(url,content)values('www.baidu.com','新增的內容');
執行後資料就插入了
4、從資料表中提取資料
select *from urls where id=1;
從表urls中把id=1的整行資料提取出來
select content from urls where id=1;
從表urls中把id為1的content部分資料提取出來
5、刪除資料
刪除表urls中的url的資料。
6、修改資料
update urls set url='www.rubbish.com',content='rubh'where id=1;
修改表urls中url和content的資料。
python操作mysql資料庫(安裝pymysql庫:pip install pysql)
import pymysql#開啟資料庫db=pymysql.connect('localhost','root','自己的密碼','scrapying')#使用cursor()方法獲取游標操作cursor=db.cursor()#sql插入語句sql="""insert into urls(url,content)values('www.baidu.com','rubh')"""try: cursor.execute(sql)#執行sql語句 db.commit()except: db.rollback()#發生錯誤則返回db.close()#關閉資料庫
開啟mysql 8.0 command line client-unicode,檢視結果。
關注我,獲取更多小技能!
大資料儲存
主流資料庫 1 mysql 以前是sun公司的產品,後被甲骨文公司收購,開源 2 oracel 成本較高,100w左右 3 db2 成本較高,100w左右 4 nosql 非關係性資料庫,基本都是key value結構 很多門戶 都使用mysql,例如 雅虎,資料庫的主從備份,是處於負載均衡範疇。資...
大資料儲存綜述
san 金融電信級別,高成本的儲存方式,涉及到光纖和各類高階裝置,可靠性和效能都很高,除了貴和運維成本高,基本都是好處。檔案儲存 nas,網路儲存,用於多主機共享資料。物件儲存 跟自己開發的應用程式打交道,如網盤。分布式鍵值系統 分布式鍵值系統用於儲存關係簡單的半結構化資料。典型的分布式鍵值系統有a...
大資料儲存HBase
這兩天要寫乙個方案,某單位想建乙個中心資料庫,匯聚各業務系統資料,以及各種網上抓取的預報資料。我設想是用hbase。主要考慮點是 1 開源 2 支援海量資料 該單位的資料量增長按規劃還是很大的,大約每天20gb 關係型資料庫就不考慮了。rdbms本質上是單機系統,拿mysql來說吧,主從複製,讀寫分...