爬蟲實戰---持續更新中-------------
實習了一個月中途被學校老師召回,難免焦慮
那就開始學習python吧
從經典的爬蟲開始。
-----------------------------------------------------------
一.準備階段
1.什麼是爬蟲?
爬蟲:就是抓取網頁資料的程式。
2.HTTP和HTTPS
HTTP協議(HyperText Transfer Protocol,超文字傳輸協議):是一種釋出和接收 HTML頁面的方法。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)簡單講是HTTP的安全版,在HTTP下加入SSL層。
SSL(Secure Sockets Layer 安全套接層)主要用於Web的安全傳輸協議,在傳輸層對網路連線進行加密,保障在Internet上資料傳輸的安全。
3.瀏覽器傳送HTTP請求的過程:
-
當用戶在瀏覽器的位址列中輸入一個URL並按回車鍵之後,瀏覽器會向HTTP伺服器傳送HTTP請求。HTTP請求主要分為“Get”和“Post”兩種方法。
-
當我們在瀏覽器輸入URL http://www.baidu.com 的時候,瀏覽器傳送一個Request請求去獲取 http://www.baidu.com 的html檔案,伺服器把Response檔案物件傳送回給瀏覽器。
-
瀏覽器分析Response中的 HTML,發現其中引用了很多其他檔案,比如Images檔案,CSS檔案,JS檔案。 瀏覽器會自動再次傳送Request去獲取圖片,CSS檔案,或者JS檔案。
-
當所有的檔案都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。
4.URL(Uniform / Universal Resource Locator的縮寫)
定義:統一資源定位符,是用於完整地描述Internet上網頁和其他資源的地址的一種標識方法。
基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
- scheme:協議(例如:http, https, ftp)
- host:伺服器的IP地址或者域名
- port#:伺服器的埠(如果是走協議預設埠,預設埠80)
- path:訪問資源的路徑
- query-string:引數,傳送給http伺服器的資料
- anchor:錨(跳轉到網頁的指定錨點位置)
5.客戶端HTTP請求
URL只是標識資源的位置,而HTTP是用來提交和獲取資源。客戶端傳送一個HTTP請求到伺服器的請求訊息,包括以下格式:
請求行
、請求頭部
、空行
、請求資料
一個典型的HTTP請求
GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh,zh-CN;q=0.8,ar;q=0.6,zh-TW;q=0.4
Cookie: BAIDUID=AE4D1DA6B2D6689BB8C557B3436893E3:FG=1; BIDUPSID=AE4D1DA6B2D6689BB8C557B3436893E3; PSTM=1501466227; BD_UPN=12314353; BD_CK_SAM=1; PSINO=1; H_PS_PSSID=1420_25548_21080_20929; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDSVRTM=0
常用請求報頭
cookie和session
HTTP請求方法
序號 方法 描述
1 GET 請求指定的頁面資訊,並返回實體主體。
2 HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
3 POST 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案),資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。
4 PUT 從客戶端向伺服器傳送的資料取代指定的文件的內容。
5 DELETE 請求伺服器刪除指定的頁面。
6 CONNECT HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
7 OPTIONS 允許客戶端檢視伺服器的效能。
8 TRACE 回顯伺服器收到的請求,主要用於測試或診斷。
主要方法get和post請求
-
GET是從伺服器上獲取資料,POST是向伺服器傳送資料
-
GET請求引數顯示,都顯示在瀏覽器網址上,HTTP伺服器根據該請求所包含URL中的引數來產生響應內容,即“Get”請求的引數是URL的一部分。 例如:
http://www.baidu.com/s?wd=Chinese
-
POST請求引數在請求體當中,訊息長度沒有限制而且以隱式的方式進行傳送,通常用來向HTTP伺服器提交量比較大的資料(比如請求中包含許多引數或者檔案上傳操作等),請求的引數包含在“Content-Type”訊息頭裡,指明該訊息體的媒體型別和編碼.
HTTP響應狀態碼
View Code
瀏覽器核心
瀏覽器 核心
IE Trident
Chrome Webkit
Firefox Gecho
Opera Pesto
Safari(Apple) Webkit
HTTP代理工具Fiddler Fiddler是一款強大Web除錯工具,它能記錄所有客戶端和伺服器的HTTP請求.
Request部分詳解
- Headers —— 顯示客戶端傳送到伺服器的 HTTP 請求的 header,顯示為一個分級檢視,包含了 Web 客戶端資訊、Cookie、傳輸狀態等。
- Textview —— 顯示 POST 請求的 body 部分為文字。
- WebForms —— 顯示請求的 GET 引數 和 POST body 內容。
- HexView —— 用十六進位制資料顯示請求。
- Auth —— 顯示響應 header 中的 Proxy-Authorization(代理身份驗證) 和 Authorization(授權) 資訊.
- Raw —— 將整個請求顯示為純文字。
- JSON - 顯示JSON格式檔案。
- XML —— 如果請求的 body 是 XML 格式,就是用分級的 XML 樹來顯示它。
Responser部分詳解
- Transformer —— 顯示響應的編碼資訊。
- Headers —— 用分級檢視顯示響應的 header。
- TextView —— 使用文字顯示相應的 body。
- ImageVies —— 如果請求是圖片資源,顯示響應的圖片。
- HexView —— 用十六進位制資料顯示響應。
- WebView —— 響應在 Web 瀏覽器中的預覽效果。
- Auth —— 顯示響應 header 中的 Proxy-Authorization(代理身份驗證) 和 Authorization(授權) 資訊。
- Caching —— 顯示此請求的快取資訊。
- Privacy —— 顯示此請求的私密 (P3P) 資訊。
- Raw —— 將整個響應顯示為純文字。
- JSON - 顯示JSON格式檔案。
- XML —— 如果響應的 body 是 XML 格式,就是用分級的 XML 樹來顯示它 。
6.python的庫
所謂網頁抓取,就是把URL地址中指定的網路資源從網路流中讀取出來,儲存到本地。 在Python中有很多庫可以用來抓取網頁,先學習urllib2
。
.網路:Python 標準庫之urllib2-負責開啟URL,HTTP協議之類的。