1. 程式人生 > >Python爬蟲入門——2. 5 爬取鬥破蒼穹並儲存到本地TXT

Python爬蟲入門——2. 5 爬取鬥破蒼穹並儲存到本地TXT

        話不多說,上程式碼:

#匯入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('<p>(.*?)</p>', 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)

現在來分析程式碼:

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’ 表示讀取二進位制檔案(比如圖片,視訊等)。

下圖為成功讀取儲存的《鬥破蒼穹》文字文件: