Python爬蟲實戰:爬取百度風雲榜

前言:

​ 既然是一個爬蟲系列教程,那麼我們肯定有一個目標範圍,畢竟現在互聯網中的網站實在是太多。那麼作為我們實戰的開篇就從百度中爬取我們未來項目中要實戰的目標列表好了,後續的視頻素材我們將從中選取。


Python爬蟲實戰:爬取百度風雲榜



本次目標:

​ 這一次我們要採集的是百度科技風雲榜 ,主要要爬取的是科技分類的軟件TOP榜單,需要把科技APP相關的應用排名爬取下來,包含科技應用的百度指數,未來可以通過每天定時進行一次採集,做為熱門行業的分析基本數據。

爬蟲技術選型:

​ 首先,我們需要簡單瞭解一下目標頁面是否有防爬機制。通過判斷是否能夠快速進行數據採集,驗證方法如下:

​ 我們嘗試對同一個頁面,以每秒1次的速度進行調用30次左右,每次完成之後,打印status_code和text的前100個字符串。如果返回結果無error,或500錯誤,那麼我們可以嘗試使用pyquery進行採集,如果有防爬機制,那麼我們可能隨機嘗試,畢竟有可能花在解決防爬機制上面的時長可能比爬取數據所花的時間更多,在項目中,我們會通過使用不同的技術進行網頁採集。

打開我們上次已經運行配置好的Python環境。需要啟動編輯器,打開我們所要訪問的頁面地址:百度科技風雲榜

現在我們開始進行嘗試一下百度,這次我們選取的其實是一個非常簡單的頁面。

1、首先我們要加載需要的模塊:request

模擬我們的瀏覽器信息

<code>headers = {
# 用戶代理
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}/<code>

2、加載頁面,判斷是否加載成功

<code>result = requests.get("http://top.baidu.com/buzz?b=1627&c=15",headers=headers)

result.status_code/<code>

3、轉碼

<code>content = result.content.decode('gb2312')/<code>

4、篩選,並整理數據

<code>items = pq.PyQuery(content).remove(".item-tr").find(".list-table>tr")

keys = []
for item in temp:
tempK = dict()
tempK['key']=(pq.PyQuery(item).find(".keyword>a:eq(0)").text())
tempK['hot']=(pq.PyQuery(item).find(".last>span").text())
/<code>

5、轉數據格式,並保存

<code>keycsv=pd.DataFrame(keys)

keycsv.to_csv("baidu_top.csv")/<code>

總結:

1、採集百度風雲榜只是我們第一個練手的項目,目的是為了整理後續課程所要的素材

2、百度風雲榜數據的使用:可以通過每天的定時採集,把數據寫到一個Excel文件當中,在累積到一定量級時,我們可以根據線性圖,或直方圖分析出我們想看到的數據成長指標

作者相關:

明哥較擅長PHP開發架構,Python開發。從業金融電商等領域多年經驗。更新時間不定,以技術為主,不定期分享技術和人生,如果有興趣可以關注。


本系列教程及源碼地址:點擊訪問

最後:如果你正在學習Python的路上,或者準備打算學習Python、明哥會陪著你陪你一起共同進步!

手打不易,有用的話,請記得關注轉發


分享到:


相關文章: