python爬取知乎热榜了解时事
python爬取知乎熱榜了解時事
需求
? 知乎熱榜是我們了解時事的一個重要途徑,但是如果我們每天沒有那么多時間來刷知乎,但是還是想要了解知乎熱榜的話,我們該怎么辦呢?在這里,我想到了通過知乎爬蟲的手段,獲取知乎熱榜的標題和簡介,保存到本地文件,從而獲取到每一天的知乎熱榜內容,這樣,我們只需要查看本地文件內容,就可以快速的了解今天一天的時事。
設計
首先進入知乎熱榜的界面,鏈接為
https://www.zhihu.com/billboard
進入鏈接后可看到如下頁面:
右鍵檢查打開開發者工具,首先選擇網絡進行抓包:
通過網絡進行抓包,查看billboard文件,進行預覽,可以看見在知乎熱榜界面的內容基本都可以看見(提示:如果出現不可預覽,可試著禁用JavaScrip在進行抓包),所以,獲取熱榜標題,我們可以直接在代碼樹(element)中得到。 但是我們會發現在預覽界面沒有熱榜內容的簡介。說明熱榜內容的簡介是由瀏覽器進行渲染得到的,而不是在數據包中獲取的。
這時,右鍵選擇查看源代碼:
在熱榜界面,我們隨便點開一個熱榜,復制簡介的一部分內容,在源代碼界面,按住ctrl+F進行搜索,搜索剛才復制的簡介內容,從而分析在瀏覽器獲取到的源代碼中是否存在簡介的內容。
這時,我們發現,在瀏覽器的源代碼中存在我們要查詢的熱榜簡介的內容。所以,我們可以通過正則表達式在獲取到的源代碼中得到簡介的內容。
代碼
首先,引入必要的包庫
import requests import re from bs4 import BeautifulSoup定義知乎熱榜的url
url = 'https://www.zhihu.com/billboard'因為知乎熱榜的頁面有一定的反扒設置,所以我們加入必要的請求頭(cookie和user-agent)
headers = {'user-agent': #你自己的user-agent'cookie': #你自己的cookie }之后獲取頁面的原代碼,加入Beautifulsoup,通過代碼樹進行信息搜索,再通過re正則表達式,在頁面源代碼中搜索簡介內容。
html = requests.get(url, headers=headers) soup = BeautifulSoup(html.text, 'lxml') titles = soup.select('a.HotList-item .HotList-itemBody .HotList-itemTitle') re_content = re.compile('"excerptArea":{"text":"(.*?)"},', re.I|re.S) results = re_content.findall(html.text)最后,如果想要更加方便的話,我們可以將搜集到的信息全部存到一個文件中,后續,我們還可以加入每天定時發送熱榜信息的文件到自己郵箱中,從而徹底實現每天不用打開知乎,而可以很輕松的了解到知乎熱榜的時事內容,如果看見自己感興趣的可以再打開網頁進行詳細觀看。
以上就是關于python爬取知乎熱榜的全部內容。
如果覺得一段一段復制比較麻煩,有需要獲取完整代碼的可點擊一下鏈接進行下載:
https://download.csdn.net/download/weixin_46784800/33263200
總結
以上是生活随笔為你收集整理的python爬取知乎热榜了解时事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MT【193】三面角的正余弦定理
- 下一篇: 计算机网络配置——路由器的配置