1、爬蟲基本原理css
1.獲取網絡數據html
用戶方式:瀏覽器提交請求->下載網頁代碼->解析/渲染成頁面python
爬蟲方式:模擬瀏覽器發送請求->下載網頁代碼->只提取有用的數據->存放於數據庫或文件中正則表達式
2.爬蟲的基本原理數據庫
向網站發起請求,獲取資源後分析並提取有用數據的程序json
3.爬蟲的基本流程瀏覽器
#一、發起請求
使用http庫向目標站點發起請求,即發送一個Request,Request包含:請求頭、請求體等服務器
#二、獲取響應內容
若是服務器能正常響應,則會獲得一個Response,Response包含:html,json,圖片,視頻等cookie
#三、解析內容
解析html數據:正則表達式,第三方解析庫如Beautifulsoup,pyquery等
解析json數據:json模塊
解析二進制數據:以b的方式寫入文件網絡
#四、保存數據
數據庫,文件
4.request和response
Request:用戶將本身的信息經過瀏覽器(socket client)發送給服務器(socket server)
Response:服務器接收請求,分析用戶發來的請求信息,而後返回數據(返回的數據中可能包含其餘連接,如:圖片,js,css等)
瀏覽器在接收Response後,會解析其內容來顯示給用戶,而爬蟲程序在模擬瀏覽器發送請求而後接收Response後,是要提取其中的有用數據。
5.Request
#一、請求方式: 經常使用的請求方式:GET,POST 其餘請求方式:HEAD,PUT,DELETE,OPTHONS ps:用瀏覽器演示get與post的區別,(用登陸演示post) post與get請求最終都會拼接成這種形式:k1=xxx&k2=yyy&k3=zzz post請求的參數放在請求體內: 可用瀏覽器查看,存放於form data內 get請求的參數直接放在url後 #二、請求url url全稱統一資源定位符,如一個網頁文檔,一張圖片 一個視頻等均可以用url惟一來肯定 url編碼 https://www.baidu.com/s?wd=圖片 圖片會被編碼(看示例代碼) 網頁的加載過程是: 加載一個網頁,一般都是先加載document文檔, 在解析document文檔的時候,遇到連接,則針對超連接發起下載圖片的請求 #三、請求頭 User-agent:請求頭中若是沒有user-agent客戶端配置, 服務端可能將你當作一個非法用戶 host cookies:cookie用來保存登陸信息 通常作爬蟲都會加上請求頭 #四、請求體 若是是get方式,請求體沒有內容 若是是post方式,請求體是format data ps: 一、登陸窗口,文件上傳等,信息都會被附加到請求體內 二、登陸,輸入錯誤的用戶名密碼,而後提交,就能夠看到post,正確登陸後頁面一般會跳轉,沒法捕捉到post
6.Response
#一、響應狀態 200:表明成功 301:表明跳轉 404:文件不存在 403:權限 502:服務器錯誤 #二、Respone header set-cookie:可能有多個,是來告訴瀏覽器,把cookie保存下來 #三、preview就是網頁源代碼 最主要的部分,包含了請求資源的內容 如網頁html,圖片 二進制數據等