在上文中我們說了:爬蟲就是請求**並提取資料的自動化程式。其中請求,提取,自動化是爬蟲的關鍵!下面我們分析爬蟲的基本流程
發起請求
通過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才可以獲取資料,因此,它是爬蟲獲取資料的基本依據。
請求頭
請求體
請求是攜帶的資料,如提交表單資料時候的表單資料(post)
所有http響應的第一行都是狀態行,依次是當前http版本號,3位數字組成的狀態**,以及描述狀態的短語,彼此由空格分隔。
響應狀態
有多種響應狀態,如:200代表成功,301跳轉,404找不到頁面,502伺服器錯誤
響應頭
如內容型別,型別的長度,伺服器資訊,設定cookie,如下圖
響應體
最主要的部分,包含請求資源的內容,如網頁html,,二進位制資料等
直接處理
json解析
正規表示式處理
beautifulsoup解析處理
pyquery解析處理
xpath解析處理
出現這種情況是因為,很多**中的資料都是通過js,ajax動態載入的,所以直接通過get請求獲取的頁面和瀏覽器顯示的不同。
如何解決js渲染的問題?
分析ajax
selenium/webdriver
splash
pyv8,ghost.py
文字:純文字,json,xml等
關係型資料庫:如mysql,oracle,sql server等結構化資料庫
非關係型資料庫:mongodb,redis等key-value形式儲存
python爬蟲從入門到放棄(二)之爬蟲的原理
本文出自 python修行路 部落格,發起請求 通過http庫向目標站點發起請求,也就是傳送乙個request,請求可以包含額外的header等資訊,等待伺服器響應 獲取響應內容解析內容 得到的內容可能是html,可以用正規表示式,頁面解析庫進行解析,可能是json,可以直接轉換為json物件解析,...
Python爬蟲從入門到放棄(一)之初識爬蟲
整理這個文件的初衷是自己開始學習的時候沒有找到好的教程和文字資料,自己整理乙份這樣的資料希望能對小夥伴有幫助 網路爬蟲 又被稱為網頁蜘蛛,網路機械人,在foaf社群中間,更經常的稱為網頁追逐者 是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻 自動索引 ...
python爬蟲從入門到放棄(一)之初識爬蟲
整理這個文件的初衷是自己開始學習的時候沒有找到好的教程和文字資料,自己整理乙份這樣的資料希望能對小夥伴有幫助 網路爬蟲 又被稱為網頁蜘蛛,網路機械人,在foaf社群中間,更經常的稱為網頁追逐者 是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻 自動索引 ...