溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python3爬蟲(chóng)中TXT文本的存儲(chǔ)方法

發(fā)布時(shí)間:2020-08-05 17:08:00 來(lái)源:億速云 閱讀:149 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下Python3爬蟲(chóng)中TXT文本的存儲(chǔ)方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

將數(shù)據(jù)保存到TXT文本的操作非常簡(jiǎn)單,而且TXT文本幾乎兼容任何平臺(tái),但是這有個(gè)缺點(diǎn),那就是不利于檢索。所以如果對(duì)檢索和數(shù)據(jù)結(jié)構(gòu)要求不高,追求方便第一的話,可以采用TXT文本存儲(chǔ)。本節(jié)中,我們就來(lái)看下如何利用Python保存TXT文本文件。

1. 本節(jié)目標(biāo)

本節(jié)中,我們要保存知乎上“發(fā)現(xiàn)”頁(yè)面的“熱門(mén)話題”部分,將其問(wèn)題和答案統(tǒng)一保存成文本形式。

2. 基本實(shí)例

首先,可以用requests將網(wǎng)頁(yè)源代碼獲取下來(lái),然后使用pyquery解析庫(kù)解析,接下來(lái)將提取的標(biāo)題、回答者、回答保存到文本,代碼如下:

import requests
from pyquery import PyQuery as pq
url = 'https://www.zhihu.com/explore'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome
    /58.0.3029.110 Safari/537.36'
}
html = requests.get(url, headers=headers).text
doc = pq(html)
items = doc('.explore-tab .feed-item').items()
for item in items:
    question = item.find('h3').text()
    author = item.find('.author-link-line').text()
    answer = pq(item.find('.content').html()).text()
    file = open('explore.txt', 'a', encoding='utf-8')
    file.write('\n'.join([question, author, answer]))
    file.write('\n' + '=' * 50 + '\n')
    file.close()

這里主要是為了演示文件保存的方式,因此requests異常處理部分在此省去。首先,用requests提取知乎的“發(fā)現(xiàn)”頁(yè)面,然后將熱門(mén)話題的問(wèn)題、回答者、答案全文提取出來(lái),然后利用Python提供的open()方法打開(kāi)一個(gè)文本文件,獲取一個(gè)文件操作對(duì)象,這里賦值為file,接著利用file對(duì)象的write()方法將提取的內(nèi)容寫(xiě)入文件,最后調(diào)用close()方法將其關(guān)閉,這樣抓取的內(nèi)容即可成功寫(xiě)入文本中了。

運(yùn)行程序,可以發(fā)現(xiàn)在本地生成了一個(gè)explore.txt文件,其內(nèi)容如圖5-1所示。

Python3爬蟲(chóng)中TXT文本的存儲(chǔ)方法

這樣熱門(mén)問(wèn)答的內(nèi)容就被保存成文本形式了。

這里open()方法的第一個(gè)參數(shù)即要保存的目標(biāo)文件名稱,第二個(gè)參數(shù)為a,代表以追加方式寫(xiě)入到文本。另外,我們還指定了文件的編碼為utf-8。最后,寫(xiě)入完成后,還需要調(diào)用close()方法來(lái)關(guān)閉文件對(duì)象。

3. 打開(kāi)方式

在剛才的實(shí)例中,open()方法的第二個(gè)參數(shù)設(shè)置成了a,這樣在每次寫(xiě)入文本時(shí)不會(huì)清空源文件,而是在文件末尾寫(xiě)入新的內(nèi)容,這是一種文件打開(kāi)方式。關(guān)于文件的打開(kāi)方式,其實(shí)還有其他幾種,這里簡(jiǎn)要介紹一下。

r:以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。

rb:以二進(jìn)制只讀方式打開(kāi)一個(gè)文件。文件指針將會(huì)放在文件的開(kāi)頭。

r+:以讀寫(xiě)方式打開(kāi)一個(gè)文件。文件指針將會(huì)放在文件的開(kāi)頭。

rb+:以二進(jìn)制讀寫(xiě)方式打開(kāi)一個(gè)文件。文件指針將會(huì)放在文件的開(kāi)頭。

w:以寫(xiě)入方式打開(kāi)一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

wb:以二進(jìn)制寫(xiě)入方式打開(kāi)一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

w+:以讀寫(xiě)方式打開(kāi)一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

wb+:以二進(jìn)制讀寫(xiě)格式打開(kāi)一個(gè)文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。

a:以追加方式打開(kāi)一個(gè)文件。如果該文件已存在,文件指針將會(huì)放在文件結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件來(lái)寫(xiě)入。

ab:以二進(jìn)制追加方式打開(kāi)一個(gè)文件。如果該文件已存在,則文件指針將會(huì)放在文件結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件來(lái)寫(xiě)入。

a+:以讀寫(xiě)方式打開(kāi)一個(gè)文件。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,則創(chuàng)建新文件來(lái)讀寫(xiě)。

ab+:以二進(jìn)制追加方式打開(kāi)一個(gè)文件。如果該文件已存在,則文件指針將會(huì)放在文件結(jié)尾。如果該文件不存在,則創(chuàng)建新文件用于讀寫(xiě)。

4. 簡(jiǎn)化寫(xiě)法

另外,文件寫(xiě)入還有一種簡(jiǎn)寫(xiě)方法,那就是使用with as語(yǔ)法。在with控制塊結(jié)束時(shí),文件會(huì)自動(dòng)關(guān)閉,所以就不需要再調(diào)用close()方法了。這種保存方式可以簡(jiǎn)寫(xiě)如下:

with open('explore.txt', 'a', encoding='utf-8') as file:
    file.write('\n'.join([question, author, answer]))
    file.write('\n' + '=' * 50 + '\n')

如果想保存時(shí)將原文清空,那么可以將第二個(gè)參數(shù)改寫(xiě)為w,代碼如下:

with open('explore.txt', 'w', encoding='utf-8') as file:
    file.write('\n'.join([question, author, answer]))
    file.write('\n' + '=' * 50 + '\n')

上面便是利用Python將結(jié)果保存為T(mén)XT文件的方法,這種方法簡(jiǎn)單易用,操作高效,是一種最基本的保存數(shù)據(jù)的方法。

看完了這篇文章,相信你對(duì)Python3爬蟲(chóng)中TXT文本的存儲(chǔ)方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI