創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)主營鹿寨網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),鹿寨h5微信平臺小程序開發(fā)搭建,鹿寨網(wǎng)站營銷推廣歡迎鹿寨等地區(qū)企業(yè)咨詢小編給大家分享一下Python3爬蟲中TXT文本的存儲方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
將數(shù)據(jù)保存到TXT文本的操作非常簡單,而且TXT文本幾乎兼容任何平臺,但是這有個缺點,那就是不利于檢索。所以如果對檢索和數(shù)據(jù)結(jié)構(gòu)要求不高,追求方便第一的話,可以采用TXT文本存儲。本節(jié)中,我們就來看下如何利用Python保存TXT文本文件。
1. 本節(jié)目標(biāo)
本節(jié)中,我們要保存知乎上“發(fā)現(xiàn)”頁面的“熱門話題”部分,將其問題和答案統(tǒng)一保存成文本形式。
2. 基本實例
首先,可以用requests將網(wǎng)頁源代碼獲取下來,然后使用pyquery解析庫解析,接下來將提取的標(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)”頁面,然后將熱門話題的問題、回答者、答案全文提取出來,然后利用Python提供的open()方法打開一個文本文件,獲取一個文件操作對象,這里賦值為file,接著利用file對象的write()方法將提取的內(nèi)容寫入文件,最后調(diào)用close()方法將其關(guān)閉,這樣抓取的內(nèi)容即可成功寫入文本中了。
運行程序,可以發(fā)現(xiàn)在本地生成了一個explore.txt文件,其內(nèi)容如圖5-1所示。
這樣熱門問答的內(nèi)容就被保存成文本形式了。
這里open()方法的第一個參數(shù)即要保存的目標(biāo)文件名稱,第二個參數(shù)為a,代表以追加方式寫入到文本。另外,我們還指定了文件的編碼為utf-8。最后,寫入完成后,還需要調(diào)用close()方法來關(guān)閉文件對象。
3. 打開方式
在剛才的實例中,open()方法的第二個參數(shù)設(shè)置成了a,這樣在每次寫入文本時不會清空源文件,而是在文件末尾寫入新的內(nèi)容,這是一種文件打開方式。關(guān)于文件的打開方式,其實還有其他幾種,這里簡要介紹一下。
r:以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。
rb:以二進制只讀方式打開一個文件。文件指針將會放在文件的開頭。
r+:以讀寫方式打開一個文件。文件指針將會放在文件的開頭。
rb+:以二進制讀寫方式打開一個文件。文件指針將會放在文件的開頭。
w:以寫入方式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
wb:以二進制寫入方式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
w+:以讀寫方式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
wb+:以二進制讀寫格式打開一個文件。如果該文件已存在,則將其覆蓋。如果該文件不存在,則創(chuàng)建新文件。
a:以追加方式打開一個文件。如果該文件已存在,文件指針將會放在文件結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件來寫入。
ab:以二進制追加方式打開一個文件。如果該文件已存在,則文件指針將會放在文件結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,則創(chuàng)建新文件來寫入。
a+:以讀寫方式打開一個文件。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,則創(chuàng)建新文件來讀寫。
ab+:以二進制追加方式打開一個文件。如果該文件已存在,則文件指針將會放在文件結(jié)尾。如果該文件不存在,則創(chuàng)建新文件用于讀寫。
4. 簡化寫法
另外,文件寫入還有一種簡寫方法,那就是使用with as語法。在with控制塊結(jié)束時,文件會自動關(guān)閉,所以就不需要再調(diào)用close()方法了。這種保存方式可以簡寫如下:
with open('explore.txt', 'a', encoding='utf-8') as file: file.write('\n'.join([question, author, answer])) file.write('\n' + '=' * 50 + '\n')
如果想保存時將原文清空,那么可以將第二個參數(shù)改寫為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é)果保存為TXT文件的方法,這種方法簡單易用,操作高效,是一種最基本的保存數(shù)據(jù)的方法。
看完了這篇文章,相信你對Python3爬蟲中TXT文本的存儲方法有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!