python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼

前言:想當年我是花了好幾百看完小說《鬥破蒼穹》,那簡直就是心疼的胃抽筋,但是還是堅持看完了,我相信現在很多小說迷都是這樣吧,但是自從我學了Python爬蟲,收費小說都不是問題了,現在後悔沒有早入坑啊啊啊

python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼

今天閒來無事,小編整理出了源碼,感興趣的拿走拿走

<code>import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import requests
import re
import time

headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}

f = open('C:/Users/hammer/Desktop/doupo.txt','a+')

def get_info(url):
res = requests.get(url,headers=headers)
if res.status_code == 200:
contents = re.findall('

(.*?)

',res.content.decode('utf-8'),re.S)
for content in contents:
f.write(content+'\\n')
else:
pass

if __name__ == '__main__':
urls = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(2,1665)]
for url in urls:
get_info(url)
time.sleep(1)
f.close()
/<code>

然後還有保存到本地TXT:

python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼


<code>#導入requests庫
import requests
#導入 re 庫
#導入時間模塊
import time
import re
#定義請求頭,請求頭可以使爬蟲偽裝成瀏覽器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
#定義連接網絡的列表
url_list = ['http://www.doupoxs.com/doupocangqiong/{}.html'.format(str(i)) for i in range(2,1665) ]

#函數主體
with open('F:/exercise/鬥破蒼穹.txt', 'w') as f:
for url in url_list:
html = requests.get(url, headers = headers)
#如果status_code = 200, 說明網頁相應成功
if html.status_code == 200:
#利用正則表達式獲取內容
contents = re.findall('

(.*?)

', html.content.decode('utf-8'), re.S)
#將內容寫入到本地txt文檔

f.write('\\n\\n')
for content in contents:
f.write(content+'\\n')
else:
pass
time.sleep(0.5)/<code>

首先我們要做的,依舊是觀察目標網頁的URL

鬥破蒼穹第一頁http://www.doupoxs.com/doupocangqiong/2.html

鬥破蒼穹第二頁為http://www.doupoxs.com/doupocangqiong/5.html

鬥破蒼穹第三頁為http://www.doupoxs.com/doupocangqiong/6.html

鬥破蒼穹第四頁為http://www.doupoxs.com/doupocangqiong/7.html

經過分析,第一頁與第二頁沒有明顯的規律,但是第二頁往後規律就很明顯了。我們依然可以構造網頁http://www.doupoxs.com/doupocangqiong/{0}.html樣式的url列表,但是 {} 裡面為3,4的時候網頁出現404,這該怎麼辦?這就需要我們來判斷返回的status_cord了,如果返回200,則說明連接成功,否則相應失敗。

現在來分析代碼:

1.導入requests庫、time模塊、re 模塊、定義請求頭

2.構造ur連接列表http://www.doupoxs.com/doupocangqiong/ { }.html 區間為[2,1665) 左閉右開,其中3,4網頁為404

3.在本地創建一個TXT文件,命名為 ”鬥破蒼穹.txt“ 。利用with 語句來進行文件的 寫 操作。

3.1利用 with 語句 打開 open 路徑為 “F:/exercise/鬥破蒼穹.txt”的文件,“w”為寫操作。

3.2利用 for 循環讀入 URL ,利用requests讀取網頁內容

3.3.判斷是否成功連接網頁,如果成功連接網頁則:

3.3.1利用正則表達式獲取文章內容。注意,我們獲得的是非utf-8編碼,因此在這裡我們多了一個步驟,就是將獲取到的內容轉換為utf-8編碼。你可以將 html.content.decode('utf-8) 更換為 html.text 打印一小部分內容觀察一下。

3.3.2在文本寫入兩行空格,用來區分章節。

3.3.3循環讀入獲取到的內容,將其寫入文本中

3.4如果連接失敗,那麼就pass掉此次循環,進入下一個循環。

3.5讓程序休息0.5秒,防止一直在運行,頻率過高從而導致爬蟲失敗。

文件操作:

打開文件進行操作之後需要將打開的文件關閉。否則會一直佔用資源。但有時程序出現問題,導致打開的文件不能正常關閉,所以我們會用 try... finally來進行文件的操作。但是這樣未免顯得繁瑣。所以 Python引入了 with 語句來自動關閉 close 文件。用法是 with open(“path”,‘identifier’)as f 其中path指的是文件的路徑,包括文件名;‘identifier’ 是標識符,表示的是對文件進行何種操作: ‘r' 表示讀文件: ’w' 表示寫文件: ‘rb’ 表示讀取二進制文件(比如圖片,視頻等)。

下圖為成功讀取保存的《鬥破蒼穹》文本文檔:

python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼

最後小編幫助大家整理了一套python教程,下面展示了部分,希望也能幫助對編程感興趣,想做數據分析,人工智能、爬蟲或者希望從事編程開發的小夥伴,畢竟python工資也還可以,如果能幫到你請點贊、點贊、點贊哦~~


python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼


python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼

python網絡爬蟲-爬取《鬥破蒼穹》全文小說 源碼


分享到:


相關文章: