【Python3爬虫】为什么你的博客没人看呢?
我相信對(duì)于很多愛好和習(xí)慣寫博客的人來(lái)說(shuō),如果自己的博客有很多人閱讀和評(píng)論的話,自己會(huì)非常開心,但是你發(fā)現(xiàn)自己用心寫的博客卻沒什么人看,多多少少會(huì)覺得有些傷心吧?我們今天就來(lái)看一下為什么你的博客沒人看呢?
?
一、頁(yè)面分析
首先進(jìn)入博客園首頁(yè),可以看到一頁(yè)有20篇博客簡(jiǎn)介,然后有200頁(yè),也就是說(shuō)總共有20*200=4000篇博客。這時(shí)我們點(diǎn)擊下一頁(yè),可以看到網(wǎng)頁(yè)上的鏈接變成了https://www.cnblogs.com/#p2,看起來(lái)好像很簡(jiǎn)單--只需要改變#p后面的數(shù)字就好了,真的是這樣嗎?打開開發(fā)者工具,刷新頁(yè)面,可以找到如下鏈接:
所攜帶的參數(shù)是這樣的:
我們很容易就知道只需要改變PageIndex的數(shù)值就能實(shí)現(xiàn)翻頁(yè)了。
?
二、解析網(wǎng)頁(yè)
返回的結(jié)果如下圖:
?
我們可以很方便的使用xpath來(lái)解析,相關(guān)代碼如下:
1 et = etree.HTML(html) 2 title_list = et.xpath('//*[@class="post_item_body"]/h3/a/text()') # 標(biāo)題 3 author_list = et.xpath('//*[@class="post_item_foot"]/a/text()') # 作者 4 time_list = et.xpath('//*[@class="post_item_foot"]/text()') # 發(fā)布時(shí)間 5 read_list = et.xpath('//*[@class="post_item_foot"]/span[2]/a/text()') # 閱讀數(shù) 6 comment_list = et.xpath('//*[@class="post_item_foot"]/span[1]/a/text()') # 評(píng)論數(shù)這里得到的數(shù)據(jù)都是”發(fā)布于 2019-01-23 14:16“、”評(píng)論(0)“、”閱讀(86)“這種,這樣顯然不利于我們對(duì)數(shù)據(jù)進(jìn)行分析,所以還需要進(jìn)行一下處理,相關(guān)代碼如下:
1 # 處理數(shù)據(jù) 2 time_list = [i.strip().lstrip('發(fā)布于 ') for i in time_list if i.strip() != ''] 3 comment_list = [int(i.strip().strip('評(píng)論(').rstrip(')')) for i in comment_list] 4 read_list = [int(i.strip().strip('閱讀(').rstrip(')')) for i in read_list]?
三、存儲(chǔ)數(shù)據(jù)
這次我使用的數(shù)據(jù)庫(kù)是MySQL數(shù)據(jù)庫(kù),首先創(chuàng)建一個(gè)數(shù)據(jù)表blogs,SQL代碼如下:
create table if not exists blogs(title varchar(100) not null,
author varchar(30) not null,
rtime varchar(30) not null,
readnum int(6) not null,
commentnum int(6) not null);
然后就可以把爬取的數(shù)據(jù)都保存到數(shù)據(jù)庫(kù)里,最后進(jìn)入數(shù)據(jù)庫(kù)查看一下:
?
?四、數(shù)據(jù)分析
?大家都是幾點(diǎn)寫博客的呢?什么時(shí)候?qū)懙牟┛蜁?huì)被更多人看到呢?這里我們可以建一個(gè)字典dic1,一個(gè)數(shù)字代表一個(gè)小時(shí),其對(duì)應(yīng)的值就是這個(gè)小時(shí)里發(fā)布的博客的數(shù)量之和,如下:
0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0,
13: 0, 14: 0, 15: 0, 16: 0, 17: 0, 18: 0, 19: 0, 20: 0, 21: 0, 22: 0, 23: 0,
}
同理還可以建立一個(gè)一樣的字典dic2,但是dic2中每個(gè)鍵的值是這個(gè)小時(shí)里發(fā)布的博客的閱讀量之和。
由于一天的數(shù)據(jù)量比較小,也不能說(shuō)明問題,然后通過查看數(shù)據(jù)庫(kù)中的數(shù)據(jù),可以知道最近的一篇博客是2019年1月22日寫的,而最早的一篇的博客是2018-11-22日寫的,所以我們可以把2018年12月整個(gè)月的數(shù)據(jù)提取出來(lái)進(jìn)行分析,這樣的話數(shù)據(jù)量不算少,得到的結(jié)果也就更有說(shuō)服力。相關(guān)代碼如下:
1 # 查看2018年12月的數(shù)據(jù) 2 day_list = ["2018-12-{}".format(str(i).zfill(2)) for i in range(1, 32)] 3 for day in day_list: 4 results = [i for i in all_data if day in i[0]] 5 for result in results: 6 t = int(result[0].split(' ')[1].split(':')[0]) 7 dic1[t] += 1 8 dic2[t] += result[1]最后根據(jù)結(jié)果繪制柱狀圖。
每小時(shí)發(fā)布的博客篇數(shù):
?
每小時(shí)發(fā)布的博客閱讀數(shù):
?
?
從第一張圖可以看到在早上9點(diǎn)-11點(diǎn)和下午3點(diǎn)-5點(diǎn)是發(fā)布博客的高峰期,在中晚飯時(shí)段也有不少人發(fā)博客,還有很多人選擇在晚上下班之后寫博客,比較意外的是凌晨三四點(diǎn)的時(shí)候也有人寫博客,可以說(shuō)是很厲害了。根據(jù)第二張圖可以知道在早上8點(diǎn)-10點(diǎn)發(fā)的博客比較容易得到高閱讀量,下午2點(diǎn)-5點(diǎn)也是比較不錯(cuò)的寫博客的時(shí)間,而凌晨寫博客的話就比較難被大家看到了,畢竟這個(gè)時(shí)候大多數(shù)人還在夢(mèng)鄉(xiāng)之中。要想你的博客被更多人看到和喜歡,除了選擇一個(gè)合適的寫博客的時(shí)間,最重要的就是用心寫出一篇好的博客!
?
完整代碼已上傳到GitHub!
轉(zhuǎn)載于:https://www.cnblogs.com/TM0831/p/10308894.html
總結(jié)
以上是生活随笔為你收集整理的【Python3爬虫】为什么你的博客没人看呢?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到下雨天考试是什么意思
- 下一篇: day6_python之md5加密