什麼是爬蟲?
爬蟲可以做什麼?
爬蟲的本質
爬蟲的基本流程
什麼是request&response
爬取到資料該怎麼辦
網路爬蟲(又被稱為網頁蜘蛛,網路機械人,在foaf社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。
其實通俗的講就是通過程式去獲取web頁面上自己想要的資料,也就是自動抓取資料
上面關於爬蟲可以做什麼,定義了乙個前提,是瀏覽器可以訪問到的任何資源,特別是對於知曉web請求生命週期的學者來說,爬蟲的本質就更簡單了。爬蟲的本質就是模擬瀏覽器開啟網頁,獲取網頁中我們想要的那部分資料。
瀏覽器開啟網頁的過程:
2、經過dns伺服器找到伺服器主機,向伺服器傳送乙個請求
3、伺服器經過解析處理後返回給使用者結果(包括html,js,css檔案等等內容)
4、瀏覽器接收到結果,進行解釋通過瀏覽器螢幕呈現給使用者結果
上面我們說了爬蟲的本質就是模擬瀏覽器自動向伺服器傳送請求,獲取、處理並解析結果的自動化程式。
爬蟲的關鍵點:模擬請求,解析處理,自動化。
發起請求
通過http庫向目標站點發起請求(request),請求可以
包含額外的header等資訊,等待伺服器響應
獲取響應內容解析內容
得到的內容可能是html,可以用正規表示式,頁面解析庫進行解析,可能是json,可以直接轉換為json物件解析,可能是二進位制資料,可以做儲存或者進一步的處理
儲存資料
儲存形式多樣,可以存為文字,也可以儲存到資料庫,或者儲存特定格式的檔案
瀏覽器傳送訊息給**所在的伺服器,這個過程就叫做htpp request
伺服器收到瀏覽器傳送的訊息後,能夠根據瀏覽器傳送訊息的內容,做相應的處理,然後把訊息回傳給瀏覽器,這個過程就是http response
瀏覽器收到伺服器的response資訊後,會對資訊進行相應的處理,然後通過顯示器呈現給使用者
請求方式
主要有:get/post兩種型別常用,另外還有head/put/delete/options
get和post的區別就是:請求的資料get是在url中,post則是存放在頭部
post:向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。這個請求可能會建立新的資源或修改現有資源,或二者皆有。
head:與get方法一樣,都是向伺服器發出指定資源的請求。只不過伺服器將不傳回資源的本文部分。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中「關於該資源的資訊」(元資訊或稱元資料)。
options:這個方法可使伺服器傳回該資源所支援的所有http請求方法。用'*'來代替資源名稱,向web伺服器傳送options請求,可以測試伺服器功能是否正常運作。
delete:請求伺服器刪除request-uri所標識的資源。
請求url
url,即統一資源定位符,也就是我們說的**,統一資源定位符是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的位址。網際網路上的每個檔案都有乙個唯一的url,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。
url的格式由三個部分組成:
第一部分是協議(或稱為服務方式)。
第二部分是存有該資源的主機ip位址(有時也包括埠號)。
第三部分是主機資源的具體位址,如目錄和檔名等。
爬蟲爬取資料時必須要有乙個目標的url才可以獲取資料,因此,它是爬蟲獲取資料的基本依據。
請求頭
請求體
請求是攜帶的資料,如提交form表單資料時候的表單資料(post)
所有http響應的第一行都是狀態行,依次是當前http版本號,3位數字組成的狀態**,以及描述狀態的短語,彼此由空格分隔。
響應狀態
有多種響應狀態,如:200代表成功,301跳轉,404找不到頁面,502伺服器錯誤
響應頭
如內容型別,型別的長度,伺服器資訊,設定cookie,如下圖:
響應體
最主要的部分,包含請求資源的內容,如網頁html,,二進位制資料等
網頁文字:如html文件,json格式化文字等其他:只要請求到的,都可以獲取
1直接處理
2json解析
3正規表示式處理
4beautifulsoup解析處理
5pyquery解析處理
6 xpath解析處理
出現這種情況是因為,很多**中的資料都是通過js,ajax動態載入的,所以直接通過get請求獲取的頁面和瀏覽器顯示的不同。文字:純文字,json,xml等如何解決js渲染的問題?
分析ajax
selenium/webdriver
splash
pyv8,ghost.py
關係型資料庫:如mysql,oracle,sql server等結構化資料庫
非關係型資料庫:mongodb,redis等key-value形式儲存
爬蟲 一 爬蟲簡介
很多人都將網際網路比喻成一張非常大的網,將世界連線起來。如果說網際網路是一張網,那麼爬蟲就像在網上爬的小蟲子,通過網頁的鏈結位址來尋找網頁,通過特定的搜尋演算法來確定路線,通常從 的某乙個頁面開始,讀取該網頁的內容,找到該網頁中的其他鏈結位址,然後通過這些鏈結位址尋找下乙個網頁,就這樣一直迴圈下去,...
Python爬蟲簡介
爬蟲 一段自動抓取網際網路資訊的程式,從網際網路上抓取對於我們有價值的資訊。網頁解析器 將乙個網頁字串進行解析,可以按照我們的要求來提取出我們有用的資訊,也可以根據dom樹的解析方式來解析。網頁解析器有正規表示式 直觀,將網頁轉成字串通過模糊匹配的方式來提取有價值的資訊,當文件比較複雜的時候,該方法...
Python爬蟲簡介
首先選取一部分精心挑選的種子url。將這些url放入待抓取url佇列。需要模組 1 urllib模組 第一種方式 import urllib.request 第二種方式 from urllib import request 2 re模組 import re資料探勘from urllib import...