1. 場景
CSDN統計資料不全,我個人是想要每篇文章每天的閱讀量的,然後可以繪制每篇文章通路曲線圖,自己慢慢研究分析。
是以寫個爬蟲,沒想到這麼簡單,12行代碼就搞定了,CSDN用心良苦啊!
2. 效果
先分析下我個人部落格,爬取結果如下,至于存入資料庫及圖形化展示,後續準備弄個小項目,同時內建下其他部落格平台自動擷取資料的功能。
釋出時間: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 ---- 标題:原創 配音提升工作效率的方法
3. 速度
因為我隻是弄着玩,不考慮速度問題,我自己300多篇部落格幾秒完事了。如果需要提高速度的話,可以開個線程池。
爬取資料之前注意不要出于商業用途,也不要爬取人家的商業資料。像我就隻分析下自己的部落格資料,問題不大。
4. 代碼
使用的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++;
}
}
}