tft每日頭條

 > 生活

 > 程序員吐槽段子

程序員吐槽段子

生活 更新时间:2024-09-30 11:20:08

最近一直在學習網絡爬蟲, 從最開始的用urllib2 bs4模塊一行一行寫爬蟲, 到現在掌握scrapy爬蟲框架, 再到學習如何破解反爬蟲, 對網絡爬蟲有了基本的了解。今天看糗百段子,突然想起以前想看段子而手機流量又不夠的時候想着有一天能在家裡把段子下載到手機上離線看就好了。現在學了爬蟲,感覺願望可以實現了。 于是今天就以爬取糗事百科搞笑段子為例, 對之前的學習做個總結。

這個例子還是基于python, 用的scrapy框架。 爬取搞笑段子原理其實很簡單: 打開糗事百科, 找到入口url(每一頁為一個入口), 然後遍曆所有網頁, 獲取搞笑段子信息保存到本地文件中。

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)1

首先打開糗事百科頁面, 我準備爬取純文字和熱圖兩個分類。 觀察兩個分類每一頁url有如下特征:

如此可以通過第一個url和一個for循環構建出剩下的所有url。

知道如何構建入口url後, 觀察下頁面的html源碼, 每個段子的作者、内容等信息可以用xpath很容易的提取出來。 如:作者=‘//div[@class="article"]//h2/text()’; 内容='//div[@class="article"//span/text()]'

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)2

經過以上分析後, 剩下的就是寫代碼實現了。 為了快速爬取又不被反爬蟲機制發現, 這裡使用了代理ip機制, 主要代碼貼上來

這段代碼是用python重寫scrapy中間件, 主要實現下面兩個功能:

  1. 改寫user-agent, 破解基于user-agent原理的反爬蟲機制

  2. 每次請求都從代理ip池中随機拿一個來用, 這樣請求間隔就可以設置的非常短, 爬取速度變快而不用擔心ip被封禁了。 說明下alive.txt中的内容是上篇文章中爬取到的代理ip并被驗證為有效的代理ip

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)3

這段代碼是pipelines.py, 用來把爬取到的段子信息保存到本地的txt文檔裡, 其中圖片會下載到IMG目錄下

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)4

下面代碼是爬蟲的實現, 主要是通過url獲取到網頁html, 然後通過xpath提取出搞笑段子

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)5

主要的實現就是這樣的, 寫出來供大家參考, 我最終爬取出來的結果是這樣的:

這格式純文字的爬取結果:

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)6

這個是熱圖的爬取結果, 圖片都保存在同級目錄下的IMG目錄下

程序員吐槽段子(程序員通過網絡爬蟲獲取糗事百科搞笑段子)7

寫這篇文章的目的是對前端時間學習有個總結, 同時期望自己的些許經驗能讓正在學習爬蟲的朋友有個參考

歡迎轉載!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved