天天看點

python爬蟲學習第一課之爬蟲基本原理掌握

1.預備知識:

1.1HTTP原理:

1.1.1URL

URL又稱為網絡資源定位符,顧明思以這是一個辨別符,用于定位網絡的資源,而對于用戶端的使用者而言網絡資源即網頁界面呈現出來的東西,而要找到這樣的資源就需要一個辨別符,比如我們想通過浏覽器進入淘寶PC端界面,我們就可以輸入淘寶的網址,浏覽器通過網址會生成一個URL,進而找到淘寶網的界面顯示在浏覽器視窗。URL包含了網址也就是域名資訊,同時還包含一些其他符号,比如百度的網址是www.baidu.com,但打開百度首頁浏覽器搜尋欄顯示的是'https://www.baidu.com',裡面包含了域名資訊也就是網址,但是還有https://這表示了通路資源需要的協定類型為https超文本傳輸協定,初次之外還有ftp,sftp等。如果你想用百度搜尋美女這一關鍵字的網頁,你會發現搜尋欄變得非常複雜,包含了很多奇怪的字母,而這一整串就是這一網絡資源的URL。

1.1.2HTML和HTTP

HTML全程超文本标記語言,這是網頁的源代碼語言格式,大多數的網頁的源代碼都有HTML寫的,然後通過解析成為網頁,包含圖檔,文字,視訊等資訊。在谷歌浏覽器打開任意界面,按下F12鍵,elements欄就可以看到目前網頁的源代碼,這些源代碼都是超文本。http的全稱是Hyper Text Transfer Protocol,超文本傳輸協定,HTTP協定用于從伺服器傳輸超文本資料到本地浏覽器的傳送協定,https表示經過SSL安全加密的傳輸協定。我們在浏覽器中輸入一個 URL,回車之後便會在浏覽器中觀察到頁面内容,實際上這個過程是浏覽器向網站所在的伺服器發送了一個 Request,即請求,網站伺服器接收到這個 Request 之後進行處理和解析,然後傳回對應的一個 Response,即響應,然後傳回給浏覽器,Response裡面就包含了頁面的源代碼等内容,浏覽器再對其進行解析便将網頁呈現了出來。

1.1.3Request

Request由本地向服務端發出擷取網絡資源。Request可以分為四部分内容:Request Method,Request URL、Request Headers、Request Body,即請求方式、請求連結、請求頭、請求體。

Request Method常見的有兩種:GET和POST

我們在浏覽器中直接輸入一個 URL 并回車,這便發起了一個 GET 請求,請求的參數會直接包含到 URL 裡,例如百度搜尋 Python,這就是一個 GET 請求。GET和POST的差別在于,GET請求所需的資訊都包含在URL内,而POST需要而外資訊,比如說要登入某一網站是需要送出賬号密碼,如果使用GET則會把敏感資訊包含在URL内,而POST則通過額外參數的形式傳遞資訊。

Request URL:你懂的

Request Headers:用于添加請求是的附加資訊,比較重要的有:Cookie, Referer, User-Agent

Cookies 的主要功能就是維持目前通路會話,例如我們輸入使用者名密碼登入了某個網站,登入成功之後伺服器會用 Session 儲存我們的登入狀态資訊,後面我們每次重新整理或請求該站點的其他頁面時會發現都是保持着登入狀态的,在這裡就是 Cookies 的功勞,Cookies 裡有資訊辨別了我們所對應的伺服器的 Session 會話,每次浏覽器在請求該站點的頁面時都會在請求頭中加上 Cookies 并将其發送給伺服器,伺服器通過 Cookies 識别出是我們自己,并且查出目前狀态是登入的狀态,是以傳回的結果就是登入之後才能看到的網頁内容.

Referer,此内容用來辨別這個請求是從哪個頁面發過來的,伺服器可以拿到這一資訊并做相應的處理,如做來源統計、做防盜鍊處理等。

User-Agent,簡稱 UA,它是一個特殊字元串頭,使得伺服器能夠識别客戶使用的作業系統及版本、浏覽器及版本等資訊。在做爬蟲時加上此資訊可以僞裝為浏覽器,如果不加很可能會被識别出為爬蟲

Request Body:

請求體,一般承載的内容是 POST 請求中的 Form Data,即表單資料,而對于 GET 請求 Request Body 則為空。

1.2爬蟲基本原理

爬蟲,即網絡爬蟲,我們可以把網際網路就比作一張大網,而爬蟲便是在網上爬行的蜘蛛,我們可以把網的節點比做一個個網頁,爬蟲爬到這就相當于通路了該頁面擷取了其資訊,節點間的連線可以比做網頁與網頁之間的連結關系,這樣蜘蛛通過一個節點後可以順着節點連線繼續爬行到達下一個節點,即通過一個網頁繼續擷取後續的網頁,這樣整個網的節點便可以被蜘蛛全部爬行到,這樣網站的資料就可以被抓取下來了。

爬蟲主體上可以分為三部分:1.擷取網頁 2.提取資訊 3.儲存資訊

1.2.1

爬蟲首先要做的工作就是擷取網頁,在這裡擷取網頁即擷取網頁的源代碼,源代碼裡面必然包含了網頁的部分有用的資訊,是以隻要把源代碼擷取下來了,就可以從中提取我們想要的資訊了。具體操作上可以使用python中的一些庫如Urllib、Requests幫助我們實作HTTP操作,得到Reponse後再解析Body中的資訊

1.2.2

我們在第一步擷取了網頁源代碼之後,接下來的工作就是分析網頁源代碼,從中提取我們想要的資料,首先最通用的方法便是采用正規表達式提取,這是一個萬能的方法,但是在構造正規表達式的時候比較複雜且容易出錯。

另外由于網頁的結構是有一定規則的,是以還有一些根據網頁節點屬性、CSS 選擇器或 XPath 來提取網頁資訊的庫,如 BeautifulSoup、PyQuery、LXML 等,使用這些庫可以高效快速地從中提取網頁資訊,如節點的屬性、文本值等内容。

1.2.3

提取資訊之後我們一般會将提取到的資料儲存到某處以便後續資料處理使用。儲存形式有多種多樣,如可以簡單儲存為 TXT 文本或 Json 文本,也可以儲存到資料庫,如 MySQL、MongoDB 等,也可儲存至遠端伺服器,如借助 Sftp 進行操作等。