python day8爬蟲基礎之資料儲存

2022-09-01 01:42:11 字數 1851 閱讀 3959

資料儲存,在爬蟲中也是十分的重要,因為我們要把我們想要的資料儲存到本地,其中最簡單直接的就是儲存為檔案文字,比如:txt、json、csv等等,除此之外,我們還可以將其儲存到資料庫中,常見的資料庫型別有關係型資料庫(mysql)和非關係型資料庫(mongodb、redis)。今天主要是看著書學習了一下txt文字儲存。

txt文字儲存的操作比較簡單,同樣也有乙個就是不利於檢索,上**(爬取知乎「發現」頁面的熱門話題):

import

requests

from pyquery import

pyquery as pq

url = '

'headers =

html = requests.get(url,headers =headers).text

#print(html)

doc =pq(html)

#print(doc)

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(

'zhuhu.txt

', '

a',encoding='

utf-8

') as file:

file.write('\n

'.join([question,author,answer]))

file.write('\n

' + '

=' *50 + '\n'

)print("

ok")

其中,我們主要用到了pyquery解析。還有乙個需要解釋的就是
with open('zhihu.txt', 'a',encoding='utf-8') as file:

中的zhihu.txt就是我們要儲存的檔名稱和型別,encoding='utf-8就是解碼操作,如果不解碼,返回的是二進位制字串,是無法正常閱讀的,所以我們需要對其進行解碼。

a代表的是以追加方式開啟乙個檔案,如果該檔案已經存在,檔案指標就會自動放到檔案結尾,如果檔案不存在,就會建立新的檔案來寫入。除了a之外,還有幾個,下邊一一介紹:

r:以唯讀方式開啟乙個檔案,檔案的指標自動放到檔案的開頭。

rb:以二進位制唯讀方式開啟乙個檔案,檔案的指標自動放到檔案的開頭。

r+:以讀寫方式開啟乙個檔案,檔案的指標自動放到檔案的開頭。

rb+:以二進位制讀寫方式開啟乙個檔案,檔案的指標自動放到檔案的開頭。

w:以寫入方式開啟乙個檔案,如果檔案已經存在,則將其覆蓋,如果檔案不存在,則建立新的檔案。

wb:以二進位制寫入方式開啟乙個檔案,如果檔案已經存在,則將其覆蓋,如果檔案不存在,則建立新的檔案。

w+:以讀寫方式開啟乙個檔案,如果檔案已經存在,則將其覆蓋,如果檔案不存在,則建立新的檔案。

ab:以二進位制追加方式開啟乙個檔案,如果檔案已經存在,則檔案指標會放在檔案結尾,如果有新的內容,會寫入到已有內容的後邊;如果檔案不存在,則建立新的檔案。

a+:以讀寫方式開啟乙個檔案,如果檔案已經存在,則檔案指標會放在檔案結尾,檔案開啟時會是追加模式,如果檔案不存在,則建立新的檔案。

ab+:以二進位制追加方式開啟乙個檔案。如果檔案已經存在,則檔案指標將會放在檔案結尾,如果檔案不存在,則建立新檔案用於讀寫。

Python day 8 異常處理)

以下是 python 內建異常類的層次結構 baseexception systemexit keyboardinterrupt generatorexit exception stopiteration arithmeticerror floatingpointerror overflowerro...

Python Day8 異常處理

python常見的標準異常總結 異常解釋 assertionerror 斷言語句 assert 失敗 attributeerror 嘗試訪問未知的物件屬性 importerror 匯入模組失敗 indexerror 索引超出序列的範圍 keyerror 字典中查詢乙個不存在的關鍵字 memoryer...

python day8 檔案操作

引數 1.檔案路徑。2.編碼方式,encode 3.執行動作 開啟方式 唯讀,只寫,追加,讀寫,寫讀。f open f mm wpcmimi.txt encoding utf 8 content f.read print content f.close f 變數,f obj,file,f handl...