爬取CSDN博客文章,统计文章历史数据
生活随笔
收集整理的這篇文章主要介紹了
爬取CSDN博客文章,统计文章历史数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
想法來源
CSDN作品數(shù)據(jù)里面只能查看一星期或者一個月的文章數(shù)據(jù)
但是我想查看我所有文章從開始至今的所有數(shù)據(jù),大概如下效果
將所有信息統(tǒng)計后,生成excel表格
然后就可以在表格進行各種統(tǒng)計,查看,比如按照訪問量排名之類的
網(wǎng)頁分析
目標是爬取
- 文章標題
- 地址
- 點贊數(shù)
- 評論數(shù)
- 收藏數(shù)
- 閱讀數(shù)
CSDN個人頁面是下拉刷新的,所以使用selenium
個人頁面源代碼不能獲取收藏數(shù)
收藏數(shù)需要進入具體文章爬取
標簽直接使用谷歌自帶工具就可以進行爬取,就不進行分析了
代碼
from selenium import webdriver from time import sleep from lxml import etree import os import requests import re import random import xlwt if __name__ == "__main__":#創(chuàng)建工作簿f = xlwt.Workbook() sheet1 = f.add_sheet(u'博客信息統(tǒng)計',cell_overwrite_ok=True)rowTitle = [u'文章',u'鏈接',u'閱讀數(shù)',u'點贊數(shù)',u'評論數(shù)',u'收藏數(shù)']for i in range(0,len(rowTitle)):sheet1.write(0,i,rowTitle[i]) headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'} bro = webdriver.Chrome(executable_path='E:/chromedriver_win32/chromedriver.exe') bro.get('https://blog.csdn.net/weixin_41413511?spm=1011.2124.3001.5343')#向下拉14次頁面,這個值根據(jù)你想下載多少自己設(shè)定bro.execute_script('window.scrollTo(0,(document.body.scrollHeight)/2)') #每次下滑一個窗口距離for i in range(1,12):sleep(2)#留個時間 刷新下圖片,不要太快bro.execute_script('window.scrollTo(0,(document.body.scrollHeight))') #每次下滑一個窗口距離sleep(1)#獲取標簽數(shù)據(jù)page_text = bro.page_sourcetree = etree.HTML(page_text)li_list = tree.xpath('//*[@id="floor-user-profile_485"]/div/div[2]/div/div[2]/div/div[2]/div/div/div') for li in li_list:url_list=li.xpath('//article/a/@href')article_title=li.xpath('//div[1]/h4/text()')view_num=li.xpath('//span[@class="view-num"]/text()')comment_num=li.xpath('//div[3]/div[1]/div[3]/span/text()')give_like_num=li.xpath('//div[3]/div[1]/div[4]/span/text()')get_collection_list=[]cnt=0#統(tǒng)計下載進度total=len(article_title)#統(tǒng)計下載文件數(shù)目for url in url_list:response = requests.get(url=url,headers=headers).texttree = etree.HTML(response)get_collection_text=tree.xpath('//*[@id="get-collection"]/text()')[0]get_collection=re.match("\n\s+(\d+)\n.*",get_collection_text).group(1)get_collection_list.append(get_collection)cnt=cnt+1print(cnt,"/",total)#設(shè)置隨機時間,這樣比較不容易被封鎖IPa=random.uniform(0.5,1.5)sleep(a)for i in range(0,total):#print(article_title[i],url_list[i],view_num[i],give_like_num[i],comment_num[i],get_collection_list[i])sheet1.write(i+1,0,article_title[i]) #文章sheet1.write(i+1,1,url_list[i]) #鏈接sheet1.write(i+1,2,int(view_num[i]))#閱讀sheet1.write(i+1,3,int(give_like_num[i]))#點贊sheet1.write(i+1,4,int(comment_num[i]))#評論sheet1.write(i+1,5,int(get_collection_list[i]))#評論f.save('F:/write_excel.xls')其他
將爬取數(shù)據(jù)放入Excel
Python中產(chǎn)生隨機數(shù)
總結(jié)
以上是生活随笔為你收集整理的爬取CSDN博客文章,统计文章历史数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDBC 事物处理
- 下一篇: iphone复制不能全选_忘记Apple