最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python爬蟲 小白入門筆記匯總

2022-12-07 13:46 作者:愛生活愛爬蟲  | 我要投稿

這篇是純干貨分享,對(duì)python感興趣的可以認(rèn)真看起來!

小白想要入門Python爬蟲,首先得了解爬蟲的基本工作原理和相關(guān)的理論基礎(chǔ),爬蟲簡介部分就不細(xì)說了,都可以百度得到。


Python爬蟲 小白入門筆記匯總

這篇是純干貨分享,對(duì)python感興趣的可以認(rèn)真看起來!
小白想要入門Python爬蟲,首先得了解爬蟲的基本工作原理和相關(guān)的理論基礎(chǔ),爬蟲簡介部分就不細(xì)說了,都可以百度得到。
爬蟲工作原理總結(jié)來講就是四部曲:
發(fā)送請(qǐng)求-獲取頁面-解析頁面-保存內(nèi)容

接下來我會(huì)對(duì)Python爬蟲各部分的學(xué)習(xí)框架進(jìn)行拆分講解
第一理論基礎(chǔ):Python編程
不用擔(dān)心Python編程會(huì)很難學(xué),在跟Java、C語言相比,Python算是一門較容易學(xué)的編程語言了,語言簡潔高效,易上手操作,對(duì)新手小白很友好。
學(xué)習(xí)Python爬蟲無非就是先把Python基礎(chǔ)知識(shí)學(xué)好,像Python開發(fā)環(huán)境使用、基礎(chǔ)語法、常量與變量、算數(shù)、條件循環(huán)語句、數(shù)據(jù)結(jié)構(gòu)類型、字符串、正則表達(dá)式、基本函數(shù)、異常處理這些,內(nèi)容是有一點(diǎn)多,但難度不是很大,0基礎(chǔ)新手小白需要花點(diǎn)心思和時(shí)間去理解這些概念涵義。
基礎(chǔ)之后可以逐步學(xué)習(xí)Python面向?qū)ο蟮木幊獭㈩?、多重繼承、模塊、異常機(jī)制、多進(jìn)程與線程等內(nèi)容
Python編程重在理清語法邏輯,熟練代碼,掌握最核心的語法應(yīng)用,比如字符串、正則表達(dá)式、循環(huán)語句等,這些在爬蟲中幾乎都要用到。

一開始接觸基礎(chǔ)不必太著急,先大概了解一下Python的基礎(chǔ)知識(shí),有些東西一開始不太理解到后面接觸的知識(shí)范圍廣了,會(huì)突然有豁然開朗的感覺。

第二爬蟲學(xué)習(xí)路線

爬蟲核心技巧
技巧一:請(qǐng)求庫
請(qǐng)求庫有:requests、selenium、urllib、aiohttp,我個(gè)人比較推薦新手小白掌握urllib和requests請(qǐng)求庫。
urllib庫
是Python內(nèi)置的HTTP請(qǐng)求庫,不需要額外安裝即可使用,包含以下4個(gè)模塊:
request 打開和讀取 URL,最基本的HTTP請(qǐng)求模塊,可以用來模擬發(fā)送請(qǐng)求
error 包含 urllib.request 拋出的異常,如果出現(xiàn)請(qǐng)求錯(cuò)誤,我們可以捕獲這些異常,然后進(jìn)行重試或其他操作以保證程序不會(huì)意外終止。
parse 用于解析 URL,比如拆分、解析、合并等。
robotparser 用于解析 robots.txt 文件,主要是用來識(shí)別網(wǎng)站的robots.txt文件,然后判斷哪些網(wǎng)站可以爬,哪些網(wǎng)站不可以爬。
urllib庫

需要注意的是urllib不能自動(dòng)判斷重定向,需要自己解析重定向的鏈接并重新請(qǐng)求。
如果你只是爬取一般的網(wǎng)頁,那么Python自帶的urllib庫足夠用了,如果是想要爬取異步加載的動(dòng)態(tài)網(wǎng)站,requests庫會(huì)方便很多。
requests庫
功能強(qiáng)大的爬取網(wǎng)頁信息的第三方庫,可以進(jìn)行自動(dòng)爬取HTML頁面及自動(dòng)網(wǎng)絡(luò)請(qǐng)求提交的操作。

requests庫的主要方法:

Response對(duì)象

requests庫爬取豆瓣短評(píng)示例:

爬蟲案例:中國高校排名



技巧二:抓包工具分析網(wǎng)絡(luò)請(qǐng)求
抓取工具主要有chrome firefox fidder appium,重點(diǎn)講一下fidder,基本可以說目前最為全面和強(qiáng)大的抓包工具就是fiddler了,使用也不算麻煩。
Fiddler也在官網(wǎng)上有提供非常詳細(xì)的文檔和教程,如果使用的時(shí)候遇到問題,可以直接查閱官網(wǎng)文檔。我們可以利用Fiddler詳細(xì)的對(duì)HTTP請(qǐng)求進(jìn)行分析,并模擬對(duì)應(yīng)的HTTP請(qǐng)求。

fiddler程序界面

fiddler本質(zhì)就是一個(gè)HTTP代理服務(wù)器,功能非常強(qiáng)大,除了可以清晰的了解每個(gè)請(qǐng)求與響應(yīng)之外,還可以進(jìn)行斷點(diǎn)設(shè)置,修改請(qǐng)求數(shù)據(jù)、攔截響應(yīng)內(nèi)容。
技巧三:解析數(shù)據(jù)庫
解析庫有非常多可以選擇,比如CSS、pyqery、re、xpath等,比較建議掌握Beautiful Soup和Xpath
Beautiful Soup解析庫
為第三方庫需要安裝使用,在命令行用pip安裝就可以了:

具體用法:變量名稱 = BeautifulSoup(需要解析的數(shù)據(jù),"html.parser’)
它是一個(gè)工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹唵?,所以不需要多少代碼就可以寫出一個(gè)完整的應(yīng)用程序,能自動(dòng)轉(zhuǎn)換編碼。
BeautifulSoup支持的解析器
1.Python標(biāo)準(zhǔn)庫:內(nèi)置庫、執(zhí)行速度適中、文檔容錯(cuò)能力強(qiáng);
2.lxml HTML解析器:速度快,文檔容錯(cuò)能力強(qiáng)(推薦);
3.lxml XML解析器:速度快,唯一支持xml的解析器;
4.html5lib:最好的容錯(cuò)性、以瀏覽器方式解析文檔,生成HTML5格式的文檔。
具體用法:soup=BeautifulSoup(markup,from_encoding="編碼方式")
Beautiful Soup模塊抓取網(wǎng)頁信息示例:

備注:1. BeautifulSoup()內(nèi)的第一個(gè)參數(shù),即需要解析的數(shù)據(jù),類型必須為字符串,否則運(yùn)行時(shí)系統(tǒng)會(huì)報(bào)錯(cuò)。
Xpath解析庫
提供了非常簡潔明了的路徑選擇表達(dá)式,XPath相對(duì)于正則表達(dá)式顯得更加簡潔明了,對(duì)于網(wǎng)頁的節(jié)點(diǎn)來說,它可以定義id、class或其他屬性。而且節(jié)點(diǎn)之間還有層次關(guān)系,在網(wǎng)頁中可以通過XPath來定位一個(gè)或多個(gè)節(jié)點(diǎn)
規(guī)則:

Xpath比Beautiful Soup更省事,省略了一層一層檢查元素代碼的工作,一般的靜態(tài)網(wǎng)站壓根不是問題。
Xpath爬取58房源信息示例:

技巧四:保存數(shù)據(jù)
學(xué)到這里就比較容易了,主要是對(duì)數(shù)據(jù)的存儲(chǔ)和處理,有兩種方式:
小規(guī)模數(shù)據(jù)可以使用txt文件、json文件、csv文件等方式來保存文件。
大規(guī)模數(shù)據(jù)就需要使用數(shù)據(jù)庫了像mysql,mongodb、redis等,就比較方便查詢管理。
這一塊掌握主流的MongoDB 就可以了,可以方便你去存儲(chǔ)一些非結(jié)構(gòu)化的數(shù)據(jù),比如各種評(píng)論的文本,圖片的鏈接等等。
以上這些核心技巧Python都有相應(yīng)的庫幫你去做,你只需要知道如何去應(yīng)用它們,掌握精通每一部分的一到兩種方法就可以了。
還想對(duì)爬蟲了解更多的話繼續(xù)往下看吧
反爬蟲應(yīng)對(duì)
當(dāng)你能夠獨(dú)自爬取80%以上的網(wǎng)站后,再學(xué)點(diǎn)反爬技巧,爬蟲之路不會(huì)有太大的阻礙。
一般爬蟲過程中可能會(huì)碰到像奇奇怪怪的驗(yàn)證碼、被封IP(例如豆瓣和github,在檢測到某一客戶端頻繁訪問后,會(huì)直接封鎖ip)、userAgent訪問限制、動(dòng)態(tài)數(shù)據(jù)加載、加密數(shù)據(jù)等這種反爬蟲的手段。
簡單一點(diǎn)的根據(jù)User-Agent過濾,例如知乎,我們只需要設(shè)置為和瀏覽器相同即可。常規(guī)的解決辦法通常有比如控制訪問頻率、抓包、反加密字體、驗(yàn)證碼OCR處理、使用代理IP池等,簡單一點(diǎn)的根據(jù)User-Agent過濾,例如知乎,我們只需要設(shè)置為和瀏覽器相同即可。能夠掌握常規(guī)的反爬技巧,絕大部分的網(wǎng)站爬蟲不是問題。
這里需要提示一點(diǎn)的是:不要去挑戰(zhàn)某寶的反爬!后果很嚴(yán)重!
如果不滿足自己的爬蟲效率,覺得爬取速度太慢了,可以去學(xué)習(xí)爬蟲框架scrapy和分布式爬蟲。
爬蟲框架scrapy:
Python開發(fā)的一個(gè)快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動(dòng)化測試.
Scrapy框架主要由五大組件組成,分別是調(diào)度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實(shí)體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。
在復(fù)雜的情況下,scrapy框架不僅能夠便捷地構(gòu)建request,還有強(qiáng)大的 selector 能夠方便地解析 response,這是一個(gè)功能十分強(qiáng)大的爬蟲框架,可以實(shí)現(xiàn)爬蟲工程化和模塊化。

分布式爬蟲
企業(yè)級(jí)爬蟲,能實(shí)現(xiàn)數(shù)據(jù)的大規(guī)模采集,通俗一點(diǎn)來理解就是它可以實(shí)現(xiàn)多臺(tái)電腦使用一個(gè)共同的爬蟲程序,同時(shí)將爬蟲任務(wù)部署到多臺(tái)電腦上運(yùn)行,這樣可以提高爬蟲速度和效率,需要掌握 Scrapy + MongoDB + Redis 這三種工具。

但是分布式爬蟲對(duì)電腦的CPU和網(wǎng)速都有一定的要求,這個(gè)看個(gè)人需要,如果你需要用于大規(guī)模的數(shù)據(jù)爬取,分布式爬蟲可以幫你解決很多的麻煩。大部分情況下單一爬蟲都能滿足一般的爬取需要,只是爬取效率比不了分布式爬蟲,有條件的可以嘗試學(xué)學(xué)分布式爬蟲。
新手小白掌握Python爬蟲相對(duì)來說是比較簡單的,只要大概掌握爬蟲的每一步操作原理,能夠熟練運(yùn)用一到兩個(gè)庫就可以實(shí)現(xiàn)簡單的爬蟲,不過還是需要自己多學(xué)多練哦!






Python爬蟲 小白入門筆記匯總的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
齐河县| 赫章县| 万盛区| 青川县| 普兰店市| 叙永县| 凤台县| 冷水江市| 余庆县| 湘潭市| 永登县| 清流县| 始兴县| 井陉县| 鹿泉市| 昔阳县| 汨罗市| 乐山市| 抚远县| 蓬安县| 噶尔县| 枣强县| 丰都县| 金堂县| 乳源| 淳安县| 宜城市| 罗定市| 宁城县| 嘉义市| 于都县| 孝昌县| 桃江县| 寿宁县| 旌德县| 河东区| 衡阳市| 榆树市| 三穗县| 兰西县| 汪清县|