您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“怎么快速掌握Python數(shù)據(jù)采集與網(wǎng)絡(luò)爬蟲技術(shù)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么快速掌握Python數(shù)據(jù)采集與網(wǎng)絡(luò)爬蟲技術(shù)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
一、數(shù)據(jù)采集與網(wǎng)絡(luò)爬蟲技術(shù)簡(jiǎn)介
網(wǎng)絡(luò)爬蟲是用于數(shù)據(jù)采集的一門技術(shù),可以幫助我們自動(dòng)地進(jìn)行信息的獲取與篩選。從技術(shù)手段來說,網(wǎng)絡(luò)爬蟲有多種實(shí)現(xiàn)方案,如PHP、Java、Python ...。那么用python 也會(huì)有很多不同的技術(shù)方案(Urllib、requests、scrapy、selenium...),每種技術(shù)各有各的特點(diǎn),只需掌握一種技術(shù),其它便迎刃而解。同理,某一種技術(shù)解決不了的難題,用其它技術(shù)或方依然無法解決。網(wǎng)絡(luò)爬蟲的難點(diǎn)并不在于網(wǎng)絡(luò)爬蟲本身,而在于網(wǎng)頁的分析與爬蟲的反爬攻克問題。
二、網(wǎng)絡(luò)爬蟲技術(shù)基礎(chǔ)
在本文中,將使用Urllib技術(shù)手段進(jìn)行項(xiàng)目的編寫。同樣,掌握了該技術(shù)手段,其他的技術(shù)手段也不難掌握,因?yàn)榕老x的難點(diǎn)不在于技術(shù)手段本身。本知識(shí)點(diǎn)包括如下內(nèi)容:
Urllib基礎(chǔ)
瀏覽器偽裝
用戶代理池
糗事百科爬蟲實(shí)戰(zhàn)
需要提前具備的基礎(chǔ)知識(shí):正則表達(dá)式
1)Urllib基礎(chǔ)
爬網(wǎng)頁
打開python命令行界面,兩種方法:ulropen()爬到內(nèi)存,urlretrieve()爬到硬盤文件。
同理,只需換掉網(wǎng)址可爬取另一個(gè)網(wǎng)頁內(nèi)容
上面是將爬到的內(nèi)容存在內(nèi)存中,其實(shí)也可以存在硬盤文件中,使用urlretrieve()方法
>>> urllib.request.urlretrieve("http://www.jd.com",filename="D:/test.html")
之后可以打開test.html,京東網(wǎng)頁就出來了。由于存在隱藏?cái)?shù)據(jù),有些數(shù)據(jù)信息和圖片無法顯示,可以使用抓包分析進(jìn)行獲取。
2)瀏覽器偽裝
嘗試用上面的方法去爬取糗事百科網(wǎng)站url="https://www.qiushibaike.com/",會(huì)返回拒絕訪問的回復(fù),但使用瀏覽器卻可以正常打開。那么問題肯定是出在爬蟲程序上,其原因在于爬蟲發(fā)送的請(qǐng)求頭所導(dǎo)致。
打開糗事百科頁面,如下圖,通過F12,找到headers,這里主要關(guān)注用戶代理User-Agent字段。User-Agent代表是用什么工具訪問糗事百科網(wǎng)站的。不同瀏覽器的User-Agent值是不同的。那么就可以在爬蟲程序中,將其偽裝成瀏覽器。
將User-Agent設(shè)置為瀏覽器中的值,雖然urlopen()不支持請(qǐng)求頭的添加,但是可以利用opener進(jìn)行addheaders,opener是支持高級(jí)功能的管理對(duì)象。代碼如下:
3)用戶代理池
在爬取過程中,一直用同樣一個(gè)地址爬取是不可取的。如果每一次訪問都是不同的用戶,對(duì)方就很難進(jìn)行反爬,那么用戶代理池就是一種很好的反爬攻克的手段。
第一步,收集大量的用戶代理User-Agent
第二步,建立函數(shù)UA(),用于切換用戶代理User-Agent
for循環(huán),每訪問一次切換一次UA
每爬3次換一次UA
foriinrange(0,10):if(i%3==0): UA() data=urllib.request.urlopen(url).read().decode("utf-8","ignore")
(*每幾次做某件事情,利用求余運(yùn)算)
4)第一項(xiàng)練習(xí)-糗事百科爬蟲實(shí)戰(zhàn)
目標(biāo)網(wǎng)站:https://www.qiushibaike.com/
需要把糗事百科中的熱門段子爬取下來,包括翻頁之后內(nèi)容,該如何獲?。?/p>
第一步,對(duì)網(wǎng)址進(jìn)行分析,如下圖所示,發(fā)現(xiàn)翻頁之后變化的部分只是page后面的頁面數(shù)字。
第二步,思考如何提取某個(gè)段子?查看網(wǎng)頁代碼,如下圖所示,可以發(fā)現(xiàn)<div class="content">的數(shù)量和每頁段子數(shù)量相同,可以用<div class="content">這個(gè)標(biāo)識(shí)提取出每條段子信息。
第三步,利用上面所提到的用戶代理池進(jìn)行爬取。首先建立用戶代理池,從用戶代理池中隨機(jī)選擇一項(xiàng),設(shè)置UA。
讀到這里,這篇“怎么快速掌握Python數(shù)據(jù)采集與網(wǎng)絡(luò)爬蟲技術(shù)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。