Python3 爬蟲實例(一)-- 簡單網頁抓取


爬蟲之前

 

在着手寫爬蟲之前,要先把其需要的知識線路理清楚。

 

第一:了解相關Http協議知識

 

HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(World Wide Web Consortium)和Internet工作小組IETF(Internet Engineering Task Force)合作的結果,(他們)最終發布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。
HTTP的請求響應模型
HTTP協議永遠都是客戶端發起請求,服務器回送響應。
這樣就限制了使用HTTP協議,無法實現在客戶端沒有發起請求的時候,服務器將消息推送給客戶端。
HTTP協議是一個無狀態的協議,同一個客戶端的這次請求和上次請求是沒有對應關系。
工作流程
一次HTTP操作稱為一個事務,其工作過程可分為四步:
1)首先客戶機與服務器需要建立連接。只要單擊某個超級鏈接,HTTP的工作開始。
2)建立連接后,客戶機發送一個請求給服務器,請求方式的格式為:統一資源標識符(URL)、協議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。
3)服務器接到請求后,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務器信息、實體信息和可能的內容。
4)客戶端接收服務器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機與服務器斷開連接。
如果在以上過程中的某一步出現錯誤,那么產生錯誤的信息將返回到客戶端,有顯示屏輸出。對於用戶來說,這些過程是由HTTP自己完成的,用戶只要用鼠標點擊,等待信息顯示就可以了。

 

第二:了解Python中urllib庫

 

Python2系列使用的是urllib2,Python3后將其全部整合為urllib;我們所需學習的是幾個常用函數。細節可去官網查看。

 

第三:開發工具

 

Python自帶編譯器 -- IDLE,十分簡潔;PyCharm -- 交互很好的Python一款IDE;Fiddler -- 網頁請求監控工具,我們可以使用它來了解用戶觸發網頁請求后發生的詳細步驟;

簡單網頁爬蟲

 

代碼

 

'''
第一個示例:簡單的網頁爬蟲

爬取豆瓣首頁
'''

import urllib.request

#網址
url = "https://www.douban.com/"

#請求
request = urllib.request.Request(url)

#爬取結果
response = urllib.request.urlopen(request)

data = response.read()

#設置解碼方式
data = data.decode('utf-8')

#打印結果
print(data)

#打印爬取網頁的各類信息

print(type(response))
print(response.geturl())
print(response.info())
print(response.getcode())

 

結果

 

截取部分結果如下圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM