Stories

Detail Return Return

python3網絡爬蟲開發實戰筆記-第一章 - Stories Detail

1.入門基礎**
雖然是入門集成但需要具有一定的計算機網絡的基礎。
1.1HTTP原理**
因為爬蟲是跟瀏覽器打交道的,瞭解HTTP的一些原理對我們後續學習爬蟲非常有幫助。
1.1.1URI和URL**
URI是統一資源標誌符,URL是統一資源定位符。言簡意賅,URL是URI的子集,一個URL必是URI,但URI中不止包URL,還有一個類是URN(統一資源名稱)它負責資源命名但不能定位到資源,例如在生活中的網名,我們只知道對方網名並不能通過這個網名找到這個人。
在使用上,URL和URI使用較多,URN使用較少我們可以籠統的把一般的網頁鏈接稱為URL或者URI。
URL的拼寫具有一定的規則:
scheme://[username:password@]hostname:port;parameters[#fragment]
scheme:協議,也稱protocol,http,https等。必要部分。
username,password:用户名和密碼。非必要
hostname:主機地址,必要。
port:端口,因為使用協議時會有默認端口所以不是必要部分。
path:路徑。非必要
parameters:參數。非必要
query:查詢。非必要
fragment:片段。一是單頁面路由,一些前端框架可以藉助它來做路由管理,另一個是HTML錨點,頁面自動滾動到某個特定位置。非必要
1.1.2HTPP和HTTPS
這二者的發展歷史我就不多贅述,主要説一下http的請求過程。這個請求過程是瀏覽器先向服務器發送請求,服務器接收請求並進行處理和解析,然後返回對應的響應。該響應包含了源代碼的內容,瀏覽器接收到會解析。
1.2 WEB網頁基礎
1.2.1網頁組成
現在網頁主要分為三大部分-HTML,CSS和JavaScripy。

HTML

HTML是用來描述網頁的語言,一般將他作為網頁的基本架構,通過不同類型標籤來表示不同的元素。不同的標籤佈局一般通過div嵌套組合而成。通過不同的排版與嵌套最終形成網頁的框架。

CSS

CSS即層疊樣式表。在HTML中,只需要用link標籤來引入寫好的CSS文件,頁面就會變得美觀,優雅。

JavaScript

JavaScript,是一種腳本語言。單純CSS和HTML組合使用,只能賦予頁面靜態效果,現在網頁上的動態效果基本都是使用JavaScript,它提供了一種實時,動態,交互的功能。一般在HTML通過script標籤引入。

1.3爬蟲的基本原理

現在的互聯網好比一個蜘蛛網,爬蟲便是在其上面爬行的蜘蛛。當蜘蛛爬到一個節點處相當於訪問了一個頁面,網頁之間的鏈接關係讓爬蟲可以通過一個節點繼續爬行到下一個節點,當整個網頁全部被訪問網站數據就抓取下來了。
1.3.1爬蟲概述
爬蟲簡單理解就是一個獲取網頁數據保存數據的自動化程序,主要有下面幾個步驟:
1.獲取源碼
對於如何獲取源碼python提供了非常的的手段。如用urllib,requests對網頁進行請求操作,我們只需解析返回響應的body部分。
2.提取信息
爬取到源碼之後,需要對源碼進行分析並從中提取目標數據。 通用的辦法是正則,但正則過程複雜容易出錯。基於上面介紹的網頁結果,我們利用一些庫來對網頁經行信息提取如Beautiful Soup,pyquery,lxml等。
3.保存數據
對提取到的數據可以保存在數據庫或者json文本等中。
1.4 Session和Cookie
如同我們上飛機需要驗證機票身份證一樣,現在大多數網頁都需要登錄才能查看,而登錄的這個動作就像我們上飛機得需要飛機票才能上去,而在網頁中的飛機票功能就是Session和Cookie共同配合的。
1.4.1無狀態HTTP
在介紹Session和Cookie之前,我們要了解一個東西HTTP的無狀態,即HTTP協議對事物處理是沒有記憶的。簡單來説就是服務器在處理請求和響應的這個過程他是不會記錄這前後狀態的變化,當你需要前面處理前面的數據時就只能重傳,這樣子非常繁瑣,直到出現了Session和Cookie用與保持連接,Session保存在服務器中,Cookie在客服端,每次訪問客服端都會帶上它併發送給服務器。服務器通過Cookie來確定狀態。在爬蟲中我們會將登錄成功後的Cookie放在請求頭裏。
1.4.2 Session
Session,是指有始有終的一系列動作,例如視頻通話,從發起通話到掛斷之間的過程就稱為一個Session。
在Web中,Session主要用來存儲用户Session所需的各種信息,這樣當用户在頁面之間跳轉,存儲在Session對象中的變量不會丟失,會一直保存下去。如果用户沒有Sessiom,服務器會自動創建。當Session過期或者被放棄才會終止掉該Session。
1.4.3 Cookie
主要鑑別用户身份,進行Session跟蹤而存儲在用户本地終端的數據。
1.4.3.1Session維持
客服端第一次請求服務器,服務器會返回一個帶有Set-Cookie響應頭,這個就是用來標記用户,客服端就會保存起來,當下一次請求時就會帶上這個Cookie,服務器收到這個Cookie會根據裏面的SessionID找到相應的Session,通過找到的Session來查看用户狀態,如果有效則處於登錄狀態,如果無效或者過期,就不能繼續訪問網頁。具體的Cookie屬性可以通過瀏覽器的F12打開開發者工具,點擊應用程序或者Application,點擊Cookie就能看到具體的屬性。
1.4.4關於一些小問題
1.持久化Cookie本質就是把Cookie的有效時間和Session有效期設置的比較長。
2.我們關閉瀏覽器並不是等同把Session消除了,之前説的Cookie會攜帶id信息,如果你把之前存的Cookie保留在本地並改寫請求頭就又可以找到之前的Session,也正是因為這樣子服務器才會設置一個Session生效時間。
這本書在第一章還介紹了代理和多線程和多進程對我來説不是很必要記如果感興趣可以看書或者網上看看資料整體上不難只是一些基本概念

Add a new Comments

Some HTML is okay.