3. 編寫爬蟲
上面的環境準備好之後,我們正式開始編寫爬蟲,但是寫代碼之前,我們首先需要對需要爬取的頁面進行分析。給大家分享這個之前,小編推薦大家加一下這個群:330637182 這個群裡好幾千人了!大家遇到啥問題都會在裡面交流!而且免費分享零基礎入門資料 web開發 爬蟲資料一整套!是個非常好的學習交流地方!也有程序員大神給大家熱心解答各種問題!很快滿員了。欲進從速哦!等大家加入學習交流基地哦!
3.1 頁面分析
3.1.1 博客園首頁推薦博客排行
5. 這樣我們使用requests編寫簡單的請求就可以獲取首頁“推薦博客排行”信息
其中BeautifulSoup解析時,我們使用的是CSS選擇器.select方法,查找id="blogger_list" > ul >li下的所有a標籤元素,同時對結果進行處理,去除了"更多推薦博客"及""博客列表(按積分)鏈接。
使用正則表達式篩選也是同理:我們首先構造了符合條件的正則表達式,然後使用re.findall找出所有元素,同時對結果進行處理,去除了"更多推薦博客"及""博客列表(按積分)鏈接。
這樣我們就完成了第一步,獲取了首頁推薦博客列表。
4. 使用Requests發送GET請求,獲取“隨筆分類”示例代碼如下:
返回結果如下:
View Code
這樣我們就完成了第二步,獲取了博客的分類目錄及文章數量信息。
3. 使用Requests調用GET接口獲取排行榜信息,示例代碼如下:
3.2 異步併發抓取
我們把上面的三步提取信息操作均封裝成函數,並將博客提取信息的兩步(提取分類及排行榜)封裝成一個統一的函數供異步併發調用即可。這裡我們推薦使用多進程的方式,配置的併發數與CPU核數一致即可,示例代碼如下:
運行結果:略
3.3 數據處理
數據處理主要是對上面生成的好的大批量數據進行處理,主要是數據合併分組,其中相對複雜的是分類數據,基本處理邏輯如下:
1. 第一步,將所有的分類數據合併保存在一個list中,示例代碼:
4. 結果展示
至此我們完成了一個完整的爬蟲邏輯講解,從頁面分析到數據獲取,從數據處理到生成詞雲。下面給大家展示下,我們爬蟲的運行結果。
4.1 隨筆分類
我們分析了所有100位推薦博客的分類(這裡發現,居然有不少大佬從來沒對文章進行過分類...),並按文章數量進行排序,前10名為:
謝謝閱讀!
原文鏈接:如有侵權請聯繫小編刪除!