App下載

python爬蟲進階——python爬蟲優(yōu)化

知名氣人小說寫手 2021-06-03 09:32:23 瀏覽數(shù) (2994)
反饋

在閱讀完小編的這篇文章后(怎么用python爬數(shù)據(jù)?python爬蟲基礎(chǔ)介紹!),相信肯定有小伙伴在抱怨“這寫的啥啊,正則表達(dá)式完全看不懂啊?”這種話。其實小編是故意的,雖然現(xiàn)在能用的工具那么多,正則表達(dá)式是比較不常用的那種,但正則表達(dá)式是比較容易理解的(其他方法可能需要學(xué)習(xí)一些 XML 的知識)。不過接下來,小編要介紹的,就是一系列爬蟲開發(fā)的優(yōu)化(包括如何不用正則表達(dá)式)。各位小伙伴們趕緊上車,開始 python 爬蟲優(yōu)化之路吧。

使用header

這是一個很重要的知識,在進行頁面請求的時候,請求頭里面會有一些信息。如果使用爬蟲的時候,默認(rèn)是沒有這些信息的(所以服務(wù)器一看到請求頭里沒有相關(guān)信息,一下子知道你是爬蟲了)。有些服務(wù)器不會給這種請求返回響應(yīng)(也就是比較簡單的反爬蟲)。其實在使用 request 進行頁面獲取的時候,?get()? 方法可以傳入一個 header。只要在 header 里面存進去相應(yīng)的瀏覽器請求頭信息,爬蟲就可以偽裝成瀏覽器,這樣服務(wù)器就會正常的返回響應(yīng)。

Request庫

有些爬蟲使用的是 python 自帶的 urllib 庫進行爬蟲開發(fā)(小編的上一篇文章直接用的 request 庫),這個自帶的庫是很強大的。不過,request 庫,比 urllib 庫更加強大,可以用更少的代碼來進行模擬瀏覽器操作。

Beautiful Soup庫

這是一個高效的網(wǎng)頁(xml)解析庫,可以從 HTML 或者 XML 中提取數(shù)據(jù)。使用這個庫可以簡單快速的進行數(shù)據(jù) html 數(shù)據(jù)定位和提取,如果會使用 css 選擇器,甚至可以結(jié)合 css 選擇器進行使用。有了他,基本就可以告別正則匹配了。

Selenium庫

這是一個自動化測試經(jīng)常會涉及到的庫。這個庫可以通過模擬用戶操作來進行對瀏覽器的控制。爬蟲也可以利用這個庫來進行對瀏覽器的控制和獲取數(shù)據(jù)。不過因為使用 Selenium 必須要打開瀏覽器運行,所以相較于不使用 Selenium 的爬蟲會比較笨拙且速度較慢。不過他因為他直接操作瀏覽器,所以不需要進行瀏覽器偽裝,有些數(shù)據(jù)在爬取的時候要求用戶有一定的操作,這種情況也只有 Selenium 能勝任·。

使用多線程

單線程的爬蟲就像一個人干活,終究是干不過多線程的。使用多線程,可以讓你的爬蟲爬取速度得到極大的提升。

使用ip代理

前面介紹了 header,有些服務(wù)器為了防止爬蟲(特別是經(jīng)過瀏覽器偽裝的爬蟲),會對相同 ip 地址的請求進行處理(當(dāng)短時間內(nèi)同一 ip 對服務(wù)器進行多次請求時會拒絕請求),這時候就要學(xué)會使用 ip 代理池偽裝你的 ip 地址來繞過這一檢測機制。

使用Cookie

在遇到需要登陸的情況時,可以使用 Cookie 來進行登陸。

注:登陸情況也可以使用 Selenium 去自動化登陸,或者使用表單形式請求服務(wù)器。

數(shù)據(jù)儲存

這分成三種情況,沒有夢想的咸魚可以直接將數(shù)據(jù)使用內(nèi)置的文件函數(shù)保存成文本文件。

想要把數(shù)據(jù)保存成 csv 格式的,可以了解一下這個庫—csv 庫。這個庫可以讀寫 csv 文件,把文件保存成這種格式可以使用 Excel 打開這種數(shù)據(jù),表格化的數(shù)據(jù)更加直觀。

想要把數(shù)據(jù)保存進數(shù)據(jù)庫的,可以使用 pymysql 庫。這個庫可以進行數(shù)據(jù)庫的操作,把文件存入數(shù)據(jù)庫更易于管理,而且也方便其他應(yīng)用的調(diào)用。

爬蟲框架—scrapy

與其他語言一樣,某些技術(shù)整合起來,就能成為一個框架。爬蟲也有一個這樣的框架,那就是 scrapy。使用這個框架可以更快速的進行爬蟲的開發(fā)。剛巧 W3Cschool 上有scrapy框架學(xué)習(xí)視頻,感興趣的小伙伴可以前往學(xué)習(xí)。

小結(jié)

在學(xué)會了上面的技術(shù)和庫的使用后,可以對爬蟲開發(fā)進行優(yōu)化,也能提高 python 爬蟲的開發(fā)速度。如果小伙伴們真的對爬蟲感興趣的話可以對上面提到的技術(shù)和工具進行深入研究。文章到這里基本也就結(jié)束了,但為了各位小伙伴們能夠保護好自己,特地附上小編警告:非法爬取網(wǎng)站數(shù)據(jù),會對網(wǎng)站的日常運營造成一定的負(fù)擔(dān),這種行為也是違法行為,請勿惡意爬取別人的網(wǎng)站數(shù)據(jù),在 python 爬蟲的學(xué)習(xí)過程中也盡量少用較高次數(shù)的循環(huán)語句進行爬??!另外有些信息是不能去爬取的(比如個人信息這類),法律紅線不能碰!


0 人點贊