python之爬蟲概述

2021-09-07 15:39:09 字數 2370 閱讀 7201

網路爬蟲(又被稱為網頁蜘蛛,網路機械人,在foaf社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。

其實通俗的講就是通過程式去獲取web頁面上自己想要的資料,也就是自動抓取資料。

模擬瀏覽器開啟網頁,獲取網頁中我們想要的那部分資料

瀏覽器開啟網頁的過程:

當你在瀏覽器中輸入位址後,經過dns伺服器找到伺服器主機,向伺服器傳送乙個請求,伺服器經過解析後傳送給使用者瀏覽器結果,包括html,js,css等檔案內容,瀏覽器解析出來最後呈現給使用者在瀏覽器上看到的結果

發起請求

通過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才可以獲取資料,因此,它是爬蟲獲取資料的基本依據。

請求頭

包含請求時的頭部資訊,如user-agent,host,cookies等資訊

請求體

請求是攜帶的資料,如提交表單資料時候的表單資料(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爬蟲之爬蟲概述

知識點 模擬瀏覽器,傳送請求,獲取響應 網路爬蟲 又被稱為網頁蜘蛛,網路機械人 就是模擬客戶端 主要指瀏覽器 傳送網路請求,接收請求響應,一種按照一定的規則,自動地抓取網際網路資訊的程式。知識點 了解 爬蟲的概念 爬蟲在網際網路世界中有很多的作用,比如 資料採集 抓取招聘 的招聘資訊 資料分析 挖掘...

爬蟲之爬蟲概述

anaconda 是乙個整合環境 資料分析 機器學習 提供了乙個叫做jupyter的視覺化工具 基於瀏覽器 啟動 cmd jupyter notebook jupyter的基本使用 cell分為兩種模式 什麼是爬蟲 爬蟲的分類 聚焦爬蟲 聚焦爬蟲是根據指定的需求抓取網路上指定的資料。例如 獲取豆瓣上...

Python爬蟲高階一之爬蟲框架概述

爬蟲入門之後,我們有兩條路可以走。乙個是繼續深入學習,以及關於設計模式的一些知識,強化python相關知識,自己動手造輪子,繼續為自己的爬蟲增加分布式,多執行緒等功能擴充套件。另一條路便是學習一些優秀的框架,先把這些框架用熟,可以確保能夠應付一些基本的爬蟲任務,也就是所謂的解決溫飽問題,然後再深入學...