在上文中我們說了:爬蟲就是請求網(wǎng)站并提取數(shù)據(jù)的自動化程序,。其中請求,,提取,自動化是爬蟲的關(guān)鍵,!下面我們分析爬蟲的基本流程 爬蟲的基本流程發(fā)起請求 獲取響應(yīng)內(nèi)容 解析內(nèi)容 保存數(shù)據(jù) 什么是Request,Response瀏覽器發(fā)送消息給網(wǎng)址所在的服務(wù)器,,這個過程就叫做HTPP Request 服務(wù)器收到瀏覽器發(fā)送的消息后,,能夠根據(jù)瀏覽器發(fā)送消息的內(nèi)容,做相應(yīng)的處理,,然后把消息回傳給瀏覽器,,這個過程就是HTTP Response 瀏覽器收到服務(wù)器的Response信息后,會對信息進行相應(yīng)的處理,,然后展示 Request中包含什么,?請求方式 主要有:GET/POST兩種類型常用,,另外還有HEAD/PUT/DELETE/OPTIONS GET:向指定的資源發(fā)出“顯示”請求。使用GET方法應(yīng)該只用在讀取數(shù)據(jù),,而不應(yīng)當被用于產(chǎn)生“副作用”的操作中,,例如在Web Application中,。其中一個原因是GET可能會被網(wǎng)絡(luò)蜘蛛等隨意訪問 POST:向指定資源提交數(shù)據(jù),請求服務(wù)器進行處理(例如提交表單或者上傳文件),。數(shù)據(jù)被包含在請求本文中,。這個請求可能會創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有,。 HEAD:與GET方法一樣,,都是向服務(wù)器發(fā)出指定資源的請求。只不過服務(wù)器將不傳回資源的本文部分,。它的好處在于,,使用這個方法可以在不必傳輸全部內(nèi)容的情況下,就可以獲取其中“關(guān)于該資源的信息”(元信息或稱元數(shù)據(jù)),。 PUT:向指定資源位置上傳其最新內(nèi)容,。 OPTIONS:這個方法可使服務(wù)器傳回該資源所支持的所有HTTP請求方法。用'*'來代替資源名稱,,向Web服務(wù)器發(fā)送OPTIONS請求,,可以測試服務(wù)器功能是否正常運作。 DELETE:請求服務(wù)器刪除Request-URI所標識的資源,。 請求URL URL,,即統(tǒng)一資源定位符,也就是我們說的網(wǎng)址,,統(tǒng)一資源定位符是對可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示,,是互聯(lián)網(wǎng)上標準資源的地址?;ヂ?lián)網(wǎng)上的每個文件都有一個唯一的URL,,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。 URL的格式由三個部分組成: 爬蟲爬取數(shù)據(jù)時必須要有一個目標的URL才可以獲取數(shù)據(jù),,因此,它是爬蟲獲取數(shù)據(jù)的基本依據(jù),。 請求頭 包含請求時的頭部信息,,如User-Agent,Host,Cookies等信息,下圖是請求請求百度時,,所有的請求頭部信息參數(shù) 請求體 Response中包含了什么所有HTTP響應(yīng)的第一行都是狀態(tài)行,依次是當前HTTP版本號,,3位數(shù)字組成的狀態(tài)代碼,,以及描述狀態(tài)的短語,,彼此由空格分隔。 響應(yīng)狀態(tài) 有多種響應(yīng)狀態(tài),,如:200代表成功,,301跳轉(zhuǎn),404找不到頁面,,502服務(wù)器錯誤
響應(yīng)頭 如內(nèi)容類型,,類型的長度,,服務(wù)器信息,設(shè)置Cookie,如下圖 響應(yīng)體 最主要的部分,,包含請求資源的內(nèi)容,,如網(wǎng)頁HTMl,圖片,二進制數(shù)據(jù)等 能爬取什么樣的數(shù)據(jù)網(wǎng)頁文本:如HTML文檔,,Json格式化文本等 如何解析數(shù)據(jù)
關(guān)于抓取的頁面數(shù)據(jù)和瀏覽器里看到的不一樣的問題出現(xiàn)這種情況是因為,,很多網(wǎng)站中的數(shù)據(jù)都是通過js,,ajax動態(tài)加載的,所以直接通過get請求獲取的頁面和瀏覽器顯示的不同,。 如何解決js渲染的問題,? 分析ajax 怎樣保存數(shù)據(jù)文本:純文本,Json,Xml等 關(guān)系型數(shù)據(jù)庫:如mysql,oracle,sql server等結(jié)構(gòu)化數(shù)據(jù)庫 非關(guān)系型數(shù)據(jù)庫:MongoDB,Redis等key-value形式存儲 |
|