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