爬蟲 1 爬蟲簡介及基礎庫

2022-09-28 03:45:11 字數 2644 閱讀 3533

學習爬蟲,第一步便是要能夠模擬瀏覽器向伺服器發出請求。

這一基礎操作可以借助 python 的庫來幫助我們實現,我們只需要學會這些庫的使用即可。

最基礎的 http 庫有:

注:在 python2 中,有 urllib 和 urllib2 兩個庫來實現 http 請求的傳送。而在 python3 中,urllib2 庫已經不復存在,統一為 urllib。

urllib 庫是 python 內建的 http 請求庫,即不需要額外安裝,可直接使用。

urllib 庫有 4 個模組:request、error、parse、robotparser。基本功能如圖1-1所示:

圖1-1 urllib庫模組關係與作用

有關 urllib 庫的用法請自行去學習,這裡給出一些學習資料,不再贅述。

urllib 庫里都是一些基礎模組,有一些模組的實用性還是很強的,例如可以利用 parse 模組對 url 進行各種處理;但是也有一些侷限性,例如:處理網頁驗證cookie時需要額外的處理才可實現,另外實現 post、put 等請求時的寫法也不太方便。

為了更加方便地實現這些操作,就有了更強大的庫 requests。

請自行學習該庫的用法,這裡給出一些學習資料。

有了 urllib 庫和 requests 庫,已經可以爬取絕大多數**的資料,但對於一些做了特殊措施的**仍然不能爬取,這是因為這些**強制使用 http/2.0 協議訪問,而 urllib 和 requests 只支援 http/1.1,不支援 http/2.0。

這時候就需要支援 http/2.0 的請求庫,即 httpx 。httpx 除了可以完成基本爬蟲的請求操作之外,還支援做非同步爬蟲,可以發起非同步客戶端請求,推薦使用。

請自行學習該庫的用法,這裡給出一些學習資料。

學習爬蟲,第二步便是要能夠將請求得到的網頁資料進行解析,獲取自己想要的資料。

最基礎的解析庫有:

正規表示式,不用多說,用來處理字串的強大工具。我們在網際網路上抓取到的資料大多是 html 文件,返回也是字串內容。

re 是 python 使用正規表示式的庫,相關用法請自行學習,這裡給出學習資料。

xpath 是 xml 路徑語言,可以用來在 xml 文件中查詢資訊,但同樣適用於 html 文件的搜尋。

xpath 解析規則可以用 lxml 庫來實現,這裡列出 xpath 的乙個常用匹配規則:

//title[@lang='eng']
xpath 功能非常強大,內建函式非常多,熟練使用之後,可以大大提公升 html 資訊的效率。

有關 lxml 庫的用法請自行去學習,這裡給出一些學習資料。

前面介紹我們可以用正規表示式來處理爬取到的內容,但是一旦正規表示式寫的有問題,得到的結果就不是我們想獲得的內容,且寫起來比較繁瑣,解析規則不易讀懂。

每乙個網頁都有一定的特殊結構和層級關係(dom樹),很多節點都用 id 或 class 來做區分,因此可以借助它們的結構和屬性來提取資料。beautiful soup 庫用一些簡單的語句就可以幫助我們完成這一目標,而不需要借助寫複雜的正規表示式匹配規則。

beautiful soup 有節點擊擇題,也有 css 選擇器,用 beautiful soup 可以省去很多繁瑣的提取工作,提高解析網頁的效率。

請自行學習該庫的用法,這裡給出一些學習資料。

pyquery 乙個類似 jquery 的 python 庫(來自官網),主要支援 css 選擇器的方式來解析資料,pyquery 是基於 lxml 模組,而 lxml 和正規表示式都是 c 語言寫的,只有 beautiful soup 是用純 python 編寫的,所以在實測中 beautiful soup 的解析速度比其他幾種解析庫要慢很多。

請自行學習該庫的用法,這裡給出一些學習資料。

前面有 lxml 解析器,使用 xpath、pyquery庫,css 選擇器來提取頁面資料。

而 parsel 庫可以將 xpath 和 css 選擇器 二者穿插使用。同時,scapy 的選擇器是基於 parsel 做的二次封裝,因此 parsel 的 api 和 scrapy 選擇器的 api 極其相似。

總之,parsel 庫是乙個融合了 xpath、css 選擇器和正規表示式的提取庫,功能強大又靈活,推薦學習,同時可以為學習 scrapy 框架打下基礎。

請自行學習該庫的用法,這裡給出一些學習資料。

對於一些小批量關係型資料可以直接儲存為文字檔案,如txt,json,csv等。

對於其中的 csv 檔案,也可以直接用 pandas 等庫來進行相關操作。

請自行學習相關知識及庫的用法,這裡給出一些相關學習資料。

如有需要,也可以將資料儲存到資料庫中。

其中,關係型資料庫可以選擇 mysql,python 操作類庫為 pymysql,

非關係型資料庫可以選擇 mongodb 和 redis,python 操作類庫分別為 pymongo,redis

請自行學習相關知識及庫的用法,這裡給出一些相關學習資料。

如果為了便於儲存和檢索,想要實現自己的搜尋引擎,那麼可以使用 elasticsearch。

這是乙個全文搜尋引擎,可以快速儲存、搜尋和分析海量資料,將爬取到的資料儲存到 elasticsearch 中,檢索時會非常方便。

請自行學習相關知識及庫的用法,這裡給出一些相關學習資料。

1 爬蟲簡介

定義 一段自動抓取網際網路資訊的程式,從網際網路上抓取對於我們有價值的資訊 網頁解析器 將乙個網頁字串進行解析,可以按照我們的要求來提取出我們有用的資訊,也可以根據dom樹的解析方式來解析。網頁解析器有正規表示式 直觀,將網頁轉成字串通過模糊匹配的方式來提取有價值的資訊,當文件比較複雜的時候,該方法...

爬蟲基礎簡介

什麼是爬蟲 通過編寫程式,模擬瀏覽器上網,然後讓其去網際網路上抓取資料的過程。爬蟲的價值 實際應用 就業 爬蟲是否違法?在法律中是不被禁止的 具有違法風險 爬蟲帶來的風險可以體現在如下2方面 如何避免進入局子 優化自己的程式,避免干擾被訪問 的正常執行 在使用,傳播爬取到的資料時,審查抓取到的內容,...

爬蟲 一 爬蟲簡介

很多人都將網際網路比喻成一張非常大的網,將世界連線起來。如果說網際網路是一張網,那麼爬蟲就像在網上爬的小蟲子,通過網頁的鏈結位址來尋找網頁,通過特定的搜尋演算法來確定路線,通常從 的某乙個頁面開始,讀取該網頁的內容,找到該網頁中的其他鏈結位址,然後通過這些鏈結位址尋找下乙個網頁,就這樣一直迴圈下去,...