高考倒计时100天,用python看看高三党
點擊上方“早起python”,關注公眾號
滿滿干貨,極速送達
一、前言
本文為python爬蟲+可視化系列第五篇,前幾篇請猛戳文末鏈接~希望能通過詳解一些簡單的小項目來學習python。今天要做的是爬取百度貼吧高考吧的帖子來看看即將高考的同學們。
二、代碼詳解
首先來看看怎樣從網站中拿到我們要的帖子標題信息,因為后面要循環去爬每一頁所以我們寫一個函數來爬,這里不用request也不用bs4等模塊,我們使用之前文章講過的mechanicalsoup去爬,來看代碼
def get_title(full_url,result):????browser = mechanicalsoup.StatefulBrowser()browser.open(full_url)res?= browser.get_current_page()tem = res.find_all('a')for?tem1 in tem:tem2 = str(tem1.get('href'))title = str(tem1.get('title'))if?len(tem2) == 13:result.append(title)return?result那么這個函數接收兩個參數,一個是目標url,而result是一個空list用來存儲標題,第一行用來創建一個瀏覽器實例,第二行是打開目標網站,第三行獲取網頁內容,第四到九行用來提取標題信息并存儲到list中,最后將結果返回。
接下來因為我們需要爬高考吧前100頁的帖子,所以我們先來看看每一頁對應的鏈接有什么規律
看到這里,該如何生成每一頁的鏈接我想就不用多說了,看代碼
def?patieba(url, beginPage, endPage,result):for?page in?range(beginPage, endPage + 1):pn = (page - 1) * 50full_url = url + "&pn="?+ str(pn)get_title(full_url,result)最后附上完整代碼(如果要爬更多頁數注意請求頻率和代理ip的設置哦)
import?mechanicalsoupdef?get_title(full_url,result):print(full_url)browser = mechanicalsoup.StatefulBrowser()browser.open(full_url)res = browser.get_current_page()tem = res.find_all('a')for?tem1 in?tem:tem2 = str(tem1.get('href'))title = str(tem1.get('title'))if?len(tem2) == 13:result.append(title)return?resultdef?patieba(url, beginPage, endPage,result):for?page in?range(beginPage, endPage + 1):pn = (page - 1) * 50full_url = url + "&pn="?+ str(pn)get_title(full_url,result)if?__name__ == '__main__':result = []beginPage = 1endPage = 10full_url = 'http://tieba.baidu.com/f?kw=高考'patieba(full_url, beginPage, endPage,result)需要注意一點的是,在我們將高考吧的鏈接復制到編輯器中是不顯示中文的,也就是我們看到瀏覽器中的鏈接是
http://tieba.baidu.com/f?kw=高考但是實際上粘貼就成了
https://tieba.baidu.com/f?kw=%E9%AB%98%E8%80%83這是因為瀏覽器對中文請求參數進行了轉碼,用代碼訪問網站所發的請求中如果有中文也必須是轉碼之后的。但因為我們使用的mechanicalsoup會對請求自動地進行urlencode,所以可以直接使用帶中文的鏈接,如果是使用urllib去爬的話就需要進行下面一步轉碼
import?urllib.parse kw_url = "http://tieba.baidu.com/f?" kw_key = urllib.parse.urlencode({"kw": kw}) full_url = kw_url + kw_key三、數據分析
首先來看看泡在貼吧里的年級分布
可以看到雖然即將高考,但是貼吧里依舊是高三黨占據了一大半,不過等等,怎么高考吧還混進幾位初中生。再來看看文理科分布
總體來說,還是理科生更多一點,接著看大家最喜歡在貼吧討論哪些學科
可以看到,最常常被提起的學科是數學,除了語數外討論最多的是物理化學,難道是因為這些學科難?再來看看高三黨們最想考的學校前十名
果然基本上想考的學校和大學實力成正比,不過光在貼吧發帖可不夠哦,最后看下高考吧的詞云圖
往期內容(????猛戳可查看)
熱門文章:
?情人節用python寫個網站對ta表白吧!
?用python制作動態圖表看全球疫情變化趨勢
?爬取網易云音樂1萬條評論,感受疫情下的真情
?釘釘在線求饒?五星分期付款?爬取釘釘App Store真實評價數據并分析
數據分析:
?疫情數據哪里找,看這篇就夠了
?Python一行命令生成數據分析報告
?python數據分析之清洗數據:缺失值處理
?更高級的數據可視化,使用pyecharts制作精美圖表
?python數據分析萬字干貨!全方位解讀pandas
?python數據分析——詳解python讀取數據相關操作
早起python
數據分析 | python爬蟲 | 網站開發 | 運維
數學 | 統計學
讓我知道你“在看”
總結
以上是生活随笔為你收集整理的高考倒计时100天,用python看看高三党的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 仿QQ计步器效果的实现
- 下一篇: 简易前端路由-点击菜单切换到对应的信息栏