1.你是否在夜深人靜的時候,想看一些會讓你更睡不着的圖片卻苦於沒有資源?
2.你是否在節假日出行高峯的時候,想快速搶購火車票成功?
3.你是否在網上購物的時候,想快速且精準的定位到口碑質量最好的商品?css
經過編寫程序,模擬瀏覽器上網,而後讓其去互聯網上抓取數據的過程。html
抓取互聯網上的數據,爲我所用,有了大量的數據,就如同有了一個數據銀行同樣,下一步作的就是如何將這些爬取的數據產品化,商業化正則表達式
使用http庫向目標站點發起請求,即發送一個Request
Request包含:請求頭、請求體等
Request模塊缺陷:不能執行JS 和CSS 代碼數據庫
若是服務器能正常響應,則會獲得一個Response
Response包含:html,json,圖片,視頻等json
解析html數據:正則表達式(RE模塊),第三方解析庫如Beautifulsoup,pyquery等
解析json數據:json模塊
解析二進制數據:以wb的方式寫入文件瀏覽器
數據庫(MySQL,Mongdb、Redis)
文件服務器
Request:用戶將本身的信息經過瀏覽器(socket client)發送給服務器(socket server)
Response:服務器接收請求,分析用戶發來的請求信息,而後返回數據(返回的數據中可能包含其餘連接,如:圖片,js,css等)
ps:瀏覽器在接收Response後,會解析其內容來顯示給用戶,而爬蟲程序在模擬瀏覽器發送請求而後接收Response後,是要提取其中的有用數據。cookie
常見的請求方式:GET / POSTsocket
url全球統一資源定位符,用來定義互聯網上一個惟一的資源 例如:一張圖片、一個文件、一段視頻均可以用url惟一肯定;
網頁的加載過程是:加載一個網頁,一般都是先加載document文檔,
在解析document文檔的時候,遇到連接,則針對超連接發起下載圖片的請求ide
User-agent:請求頭中若是沒有user-agent客戶端配置,服務端可能將你當作一個非法用戶host;
cookies:cookie用來保存登陸信息
注意:通常作爬蟲都會加上請求頭
請求頭須要注意的參數:
(1)Referrer:訪問源至哪裏來(一些大型網站,會經過Referrer 作防盜鏈策略;全部爬蟲也要注意模擬)
(2)User-Agent:訪問的瀏覽器(要加上不然會被當成爬蟲程序)
(3)cookie:請求頭注意攜帶
若是是get方式,請求體沒有內容(get請求的請求體放在 url後面參數中,直接能看到)
若是是post方式,請求體是format data
ps:
一、登陸窗口,文件上傳等,信息都會被附加到請求體內
二、登陸,輸入錯誤的用戶名密碼,而後提交,就能夠看到post,正確登陸後頁面一般會跳轉,沒法捕捉到 post
200:表明成功
301:表明跳轉
404:文件不存在
403:無權限訪問
502:服務器錯誤
響應頭須要注意的參數:
(1)Set-Cookie:BDSVRTM=0; path=/:可能有多個,是來告訴瀏覽器,把cookie保存下來
(2)Content-Location:服務端響應頭中包含Location返回瀏覽器以後,瀏覽器就會從新訪問另外一個頁面
JSO數據
如網頁html,圖片
二進制數據等
爬取--->解析--->存儲
請求庫:requests,selenium(能夠驅動瀏覽器解析渲染CSS和JS,但有性能劣勢(有用沒用的網頁都會加載);) 解析庫:正則,beautifulsoup,pyquery 存儲庫:文件,MySQL,Mongodb,Redis~~