Python 爬蟲入門

爬蟲需求

1.你是否在夜深人靜的時候,想看一些會讓你更睡不着的圖片卻苦於沒有資源?
2.你是否在節假日出行高峯的時候,想快速搶購火車票成功?
3.你是否在網上購物的時候,想快速且精準的定位到口碑質量最好的商品?css

爬蟲簡介

經過編寫程序,模擬瀏覽器上網,而後讓其去互聯網上抓取數據的過程。html

爬蟲的價值

抓取互聯網上的數據,爲我所用,有了大量的數據,就如同有了一個數據銀行同樣,下一步作的就是如何將這些爬取的數據產品化,商業化正則表達式

爬蟲流程

Python 爬蟲入門

1.發送請求request

使用http庫向目標站點發起請求,即發送一個Request
Request包含:請求頭、請求體等 
Request模塊缺陷:不能執行JS 和CSS 代碼數據庫

2.獲取響應內容 response

若是服務器能正常響應,則會獲得一個Response
Response包含:html,json,圖片,視頻等json

3.解析內容

解析html數據:正則表達式(RE模塊),第三方解析庫如Beautifulsoup,pyquery等
解析json數據:json模塊
解析二進制數據:以wb的方式寫入文件瀏覽器

4.保存數據

數據庫(MySQL,Mongdb、Redis)
文件服務器

HTTP的請求和響應

Python 爬蟲入門

請求響應過程

Request:用戶將本身的信息經過瀏覽器(socket client)發送給服務器(socket server)
Response:服務器接收請求,分析用戶發來的請求信息,而後返回數據(返回的數據中可能包含其餘連接,如:圖片,js,css等)
ps:瀏覽器在接收Response後,會解析其內容來顯示給用戶,而爬蟲程序在模擬瀏覽器發送請求而後接收Response後,是要提取其中的有用數據。cookie

Request內容

1.請求方式:

Python 爬蟲入門

常見的請求方式:GET / POSTsocket

2.請求的URL

url全球統一資源定位符,用來定義互聯網上一個惟一的資源 例如:一張圖片、一個文件、一段視頻均可以用url惟一肯定;
網頁的加載過程是:加載一個網頁,一般都是先加載document文檔,
在解析document文檔的時候,遇到連接,則針對超連接發起下載圖片的請求ide

3.請求頭

Python 爬蟲入門

User-agent:請求頭中若是沒有user-agent客戶端配置,服務端可能將你當作一個非法用戶host;
cookies:cookie用來保存登陸信息
注意:通常作爬蟲都會加上請求頭
請求頭須要注意的參數:
(1)Referrer:訪問源至哪裏來(一些大型網站,會經過Referrer 作防盜鏈策略;全部爬蟲也要注意模擬)
(2)User-Agent:訪問的瀏覽器(要加上不然會被當成爬蟲程序)
(3)cookie:請求頭注意攜帶

4.請求體

Python 爬蟲入門

若是是get方式,請求體沒有內容(get請求的請求體放在 url後面參數中,直接能看到)
若是是post方式,請求體是format data
 ps:
一、登陸窗口,文件上傳等,信息都會被附加到請求體內
二、登陸,輸入錯誤的用戶名密碼,而後提交,就能夠看到post,正確登陸後頁面一般會跳轉,沒法捕捉到 post

響應Response

1.響應狀態碼

Python 爬蟲入門

200:表明成功
301:表明跳轉
404:文件不存在
403:無權限訪問
502:服務器錯誤

2.respone header

Python 爬蟲入門

響應頭須要注意的參數:
(1)Set-Cookie:BDSVRTM=0; path=/:可能有多個,是來告訴瀏覽器,把cookie保存下來
(2)Content-Location:服務端響應頭中包含Location返回瀏覽器以後,瀏覽器就會從新訪問另外一個頁面

3.preview就是網頁源代碼

Python 爬蟲入門

JSO數據
如網頁html,圖片
二進制數據等

總結

爬蟲流程:

 爬取--->解析--->存儲

爬蟲所需工具:

請求庫:requests,selenium(能夠驅動瀏覽器解析渲染CSS和JS,但有性能劣勢(有用沒用的網頁都會加載);) 解析庫:正則,beautifulsoup,pyquery 存儲庫:文件,MySQL,Mongodb,Redis~~

相關文章
相關標籤/搜索