場景
CSDN統計數據不全,我個人是想要每篇文章每天的閱讀量的,然後可以繪製每篇文章訪問曲線圖,自己慢慢研究分析。
所以寫個爬蟲,沒想到這麼簡單,12行代碼就搞定了,CSDN用心良苦啊!
效果
先分析下我個人博客,爬取結果如下,至於存入數據庫及圖形化展示,後續準備弄個小項目,同時集成下其他博客平臺自動獲取數據的功能。
發佈時間:2020-02-20 07:36:05 ---- 閱讀量:164 ---- 標題:原創 SpringBoot之路系列文章--(更新至第10篇)
發佈時間:2020-01-22 18:05:35 ---- 閱讀量:441 ---- 標題:原創 Spring之路系列文章--(已完結,共50篇)
發佈時間:2019-12-30 22:41:39 ---- 閱讀量:245 ---- 標題:原創 Java Web開發入門系列教程--(已完結,共34篇)
發佈時間:2019-11-11 22:38:19 ---- 閱讀量:156 ---- 標題:原創 程序員數學系列--(更新至第29篇)
發佈時間:2019-10-17 21:23:17 ---- 閱讀量:568 ---- 標題:原創 C語言數據結構系列--(更新至第16篇)
發佈時間:2019-10-08 20:51:01 ---- 閱讀量:154 ---- 標題:原創 毛哥的快樂生活系列--(更新至第30篇)
發佈時間:2019-09-22 21:01:31 ---- 閱讀量:2116 ---- 標題:原創 Python語言入門系列--(已完結,共29篇)
發佈時間:2020-03-06 15:45:44 ---- 閱讀量:8 ---- 標題:原創 使用MyCat單庫分表實戰詳解
發佈時間:2020-03-06 11:32:26 ---- 閱讀量:34 ---- 標題:原創 使用MyCat分庫實戰詳解
發佈時間:2020-03-06 10:00:39 ---- 閱讀量:103 ---- 標題:原創 RabbitMQ安裝過程詳解
OK,試下CSDN博客排行榜第一的數據,也沒問題
發佈時間:2019-11-16 22:34:32 ---- 閱讀量:2005 ---- 標題:原創 歡迎關注我的微信公衆號"濤歌依舊",感謝大家支持和鼓勵!
發佈時間:2020-03-06 22:32:59 ---- 閱讀量:23 ---- 標題:原創 異步log"丟失"之謎
發佈時間:2020-03-06 22:31:43 ---- 閱讀量:267 ---- 標題:原創 log丟失之謎
發佈時間:2020-03-06 22:29:16 ---- 閱讀量:15 ---- 標題:原創 如何查看tcp連接的建立時間?
發佈時間:2020-02-24 22:57:04 ---- 閱讀量:300 ---- 標題:原創 筆試面試之C語言
發佈時間:2020-02-24 22:56:36 ---- 閱讀量:443 ---- 標題:原創 金三銀四求職季
發佈時間:2020-02-24 22:56:12 ---- 閱讀量:131 ---- 標題:原創 拳不離手, 曲不離口---26個字母和48個音標的發音練習
發佈時間:2020-02-24 22:55:44 ---- 閱讀量:79 ---- 標題:原創 “暗淡藍點”三十年
發佈時間:2020-02-15 10:34:03 ---- 閱讀量:408 ---- 標題:原創 配音王者榮耀遊戲宣傳片
發佈時間:2020-02-15 10:31:40 ---- 閱讀量:163 ---- 標題:原創 配音提升工作效率的方法
速度
因爲我只是弄着玩,不考慮速度問題,我自己300多篇博客幾秒完事了。如果需要提高速度的話,可以開個線程池。
爬取數據之前注意不要出於商業用途,也不要爬取人家的商業數據。像我就只分析下自己的博客數據,問題不大。
代碼
使用的Jsoup,因爲這個庫足夠簡單,後續再研究下其他的庫。
先導入maven依賴
<dependency>
<!-- jsoup HTML parser library @ https://jsoup.org/ -->
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
然後代碼如下,非常簡單,我就不詳解了。老鐵們使用的時候將https://studyingpanda.blog.csdn.net
替換成你自己的博客主頁地址即可。
另外有用代碼確實只有12行,沒有誇大哈。
package org.maoge.myspace.utils;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* Jsonup工具類
*/
public class JsoupUtil {
public static void main(String[] args) throws IOException {
getDataFromCsdn();
}
/**
* 獲取CSDN博客訪問信息
*/
public static void getDataFromCsdn() throws IOException {
int i = 1;//頁碼
while (true) {
Document doc = Jsoup.connect("https://studyingpanda.blog.csdn.net/article/list/" + i).get(); // 通過地址加載html文檔
Elements articleBoxs = doc.body().select(".article-item-box"); // 獲取該頁文章列表
if (articleBoxs.size() == 0) {// 該頁沒有文章時結束
break;
}
for (Element box : articleBoxs) {//遍歷所有文章,並通過選擇器獲取相關元素信息,然後輸出信息
System.out.println(String.format("發佈時間:%s ---- 閱讀量:%-6s ---- 標題:%s", box.select(".date").first().text(),
box.select(".num").first().text(), box.select("h4").first().text()));
}
i++;
}
}
}