您好,登錄后才能下訂單哦!
小編給大家分享一下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所示。
這樣熱門(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è)資訊頻道,感謝各位的閱讀!
免責(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)容。