目錄
前言
一、2024博客之星
1、所有排名數據
2、空間屬性管理
二、數據抓取與處理
1、相關業務表的設計
2、數據抓取處理
3、空間查詢分析實踐
三、數據成果挖掘
1、省域分布解讀
2、技術開發活躍
四、總結
前言
? ? ? ? 2024年博客之星的評選活動已經過去了一個月,還記得在網絡投票環節中的硝煙四起。非常感謝各位朋友的支持,本人在本次活動中榮獲Top28。通過活動看到很多優秀的博主,也看到了自己的不足,2025年希望一如既往地努力。在數字化浪潮席卷全球的今天,博客作為一種信息傳播與思想表達的重要載體,早已超越了傳統意義上的個人寫作平臺,成為連接個體與社會、文化與技術的橋梁。從早期的技術博客到如今多元化的內容生態,博客不僅記錄了時代的變化,也塑造了人們獲取信息、表達觀點、參與公共討論的方式。隨著人工智能、短視頻等新興媒介的崛起,博客的形態和功能正在經歷深刻的轉型。然而,無論技術如何迭代,博客的核心價值——思想的自由表達與知識的廣泛傳播——始終未變。
????????在這樣的背景下,研究博客之星的省域空間分布,不僅是對當代網絡內容生態的一次剖析,更是對區域文化、經濟、教育等多維度發展水平的一次映射。本文以2024年全網Top300博客之星為研究對象,試圖通過數據可視化與深度分析,揭示博客創作者在地理空間上的分布規律,并探討其背后的社會動因與文化邏輯。博客之星的評選,是對網絡內容創作者影響力、原創性與社會價值的綜合認可。這些創作者不僅是信息的傳播者,更是文化的塑造者。他們的內容覆蓋科技、文學、藝術、教育、商業等多個領域,反映了當代社會的多元需求與價值取向。
????????從地域分布來看,博客之星的涌現往往與區域的經濟發展水平、教育資源分布以及文化氛圍密切相關。例如,經濟發達地區通常擁有更高的互聯網普及率和更強的數字基礎設施,這為博客創作者提供了更好的創作環境;而教育資源豐富的地區,則更容易培養出具有批判性思維和表達能力的內容生產者。此外,區域文化特質也對博客內容的風格與主題產生深遠影響。例如,沿海地區的博客可能更關注全球化議題,而內陸地區的博客則可能聚焦于本土文化與社會問題。本文試圖以地理空間分布的角度來看看技術的空間熱點分布。
一、2024博客之星
????????在過去的 2024 年,博客世界精彩紛呈,各路博主筆耕不輟,用文字編織出無數動人的故事、深刻的見解和實用的知識。如今,我們終于迎來激動人心的 2024 年博客之星年度評選活動,這是一場屬于博主們的榮耀盛宴,也是廣大用戶見證優秀創作者的絕佳機會!????????
????????本次評選旨在表彰那些在 2024 年中,憑借獨特的視角、優質的內容、創新的形式以及強大的影響力,在博客領域脫穎而出的杰出博主。無論你是在哪個技術領域,只要你在博客世界留下了濃墨重彩的一筆,都有可能成為我們矚目的 “博客之星”!
????????以上是博客之星的活動說明,來源于官網鏈接:2024 博客之星年度評選活動,閃耀開啟!。?
?????????為了很好的進行省域數據的挖掘與分析,這里將需要對官方公布的數據進行清洗和處理。清洗的步驟分為兩步,第一步是從官網中獲取所有排名的數據,第二步是抓取空間屬性數據,為省域分析奠定基礎。
1、所有排名數據
????????本次博客之星的最終排名:2024年博客之星年度評選——個人影響力評審得分+獲獎榜單公布。大家可以在官方網站上查看相關的信息,如下圖所示這里貼出了前10名的優秀大佬:
2、空間屬性管理
????????我們在每個博客之星的博客主頁上,都可以看到博主的IP所屬信息。雖然有一些博主的IP歸屬有一定的誤差,但大多數還是比較準確的。所有上榜的博主的博客都值得深入閱讀學習,這里以博主個人的博客主頁為例,主要講解空間屬性的數據展示,打開個人主頁:夜郎King的博客。打開主頁后可以看到以下信息:
????????在博主的個人首頁上可以看到許多的關鍵信息,除了常規的博客昵稱、碼齡、性別、博客等級、博客訪問量、博客原創數、博客排名、粉絲數、個人簡介、IP歸屬地、加入CSDN的時間、原力等級等諸多的信息,為了實現博客的空間關聯,主要是使用IP屬地來進行歸屬地空間關聯,其它的關鍵信息在后續的系列博客中會進行詳細介紹。
二、數據抓取與處理
????????為了實現對博客之星的省域空間分布進行全面的數據挖掘與處理。需要我們對相關的博客地址以及排名情況進行抓取和處理。后續我們會加上時間的維度,來綜合展示不同年度的省域人員分布,從而揭示其時空特性。本節將分三個部分介紹,第一部分是詳細介紹相關的業務表設計,第二部分講解如何進行數據的獲取,第三部分是基于業務表的空間查詢分析實踐。
1、相關業務表的設計
????????為了實現對數據的整體挖掘,這里我們使用關系型數據庫來進行相關數據的存儲。為了很好的進行數據挖掘,這里我們設計三張表,如下面的PowerDesigner所示:
????????首先需要存儲博客的基本信息、其次要存儲不同年份的的博客排名信息表,最后就是存儲博客的擴展信息,比如所屬省份、總訪問量、原創數、博客等級、性別等信息。其中,博客之星的排名信息表與擴展信息表和博客信息表是一一對應的關系。這三張表的物理表結構如下:
????????博客信息表:
CREATE TABLE "public"."biz_csdn_blog" ("pk_id" int8 NOT NULL,"nick_name" varchar(100) COLLATE "pg_catalog"."default" NOT NULL,"blog_id" varchar(100) COLLATE "pg_catalog"."default","blog_home" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,"blog_href" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,"create_by" int8,"create_time" timestamp(6),"update_by" int8,"update_time" timestamp(6),CONSTRAINT "pk_biz_csdn_blog" PRIMARY KEY ("pk_id")
);
CREATE INDEX "idx_biz_csdn_blog_href" ON "public"."biz_csdn_blog" USING btree ("blog_href" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
COMMENT ON COLUMN "public"."biz_csdn_blog"."pk_id" IS '主鍵';
COMMENT ON COLUMN "public"."biz_csdn_blog"."nick_name" IS '用戶昵稱';
COMMENT ON COLUMN "public"."biz_csdn_blog"."blog_id" IS '用戶ID';
COMMENT ON COLUMN "public"."biz_csdn_blog"."blog_home" IS '博客主頁';
COMMENT ON COLUMN "public"."biz_csdn_blog"."blog_href" IS '博客地址';
COMMENT ON COLUMN "public"."biz_csdn_blog"."create_by" IS '創建人';
COMMENT ON COLUMN "public"."biz_csdn_blog"."create_time" IS '創建時間';
COMMENT ON COLUMN "public"."biz_csdn_blog"."update_by" IS '更新人';
COMMENT ON COLUMN "public"."biz_csdn_blog"."update_time" IS '更新時間';
COMMENT ON TABLE "public"."biz_csdn_blog" IS '用于保存CSDN的博客信息表';
????????排名信息表:
CREATE TABLE "public"."biz_csdn_blog_rank" ("pk_id" int8 NOT NULL,"blog_info_id" int8 NOT NULL,"rank" int4 NOT NULL,"year" int4,CONSTRAINT "pk_biz_csdn_blog_rank" PRIMARY KEY ("pk_id")
);
COMMENT ON COLUMN "public"."biz_csdn_blog_rank"."pk_id" IS '主鍵';
COMMENT ON COLUMN "public"."biz_csdn_blog_rank"."blog_info_id" IS '博客信息表主鍵';
COMMENT ON COLUMN "public"."biz_csdn_blog_rank"."rank" IS '排名';
COMMENT ON COLUMN "public"."biz_csdn_blog_rank"."year" IS '年度';
COMMENT ON TABLE "public"."biz_csdn_blog_rank" IS 'CSDN博客之星排名信息表';
?????????擴展信息表:
CREATE TABLE "public"."biz_csdn_blog_ext" ("pk_id" int8 NOT NULL,"blog_info_id" int8 NOT NULL,"province_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL,"province_code" varchar(16) COLLATE "pg_catalog"."default","access_total" int4,"original_total" int4,"fans_total" int4,"blog_level" int2,"gender" int2,CONSTRAINT "pk_biz_csdn_blog_ext" PRIMARY KEY ("pk_id")
);COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."pk_id" IS '主鍵';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."blog_info_id" IS '博客信息表主鍵';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."province_name" IS '所屬省份名稱';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."province_code" IS '所屬省份code';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."access_total" IS '總訪問量';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."original_total" IS '原創數';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."fans_total" IS '粉絲數';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."blog_level" IS '博客等級';
COMMENT ON COLUMN "public"."biz_csdn_blog_ext"."gender" IS '性別';
COMMENT ON TABLE "public"."biz_csdn_blog_ext" IS 'CSDN博客之星擴展信息表,用于保存加入CSDN時間,所在省份,性別,訪問量,博客等級,個人成就json,興趣領域json';
2、數據抓取處理
????????對于全網的綜合排名以及IP所屬地的獲取,這里采用Java和Jsoup的方式來進行獲取。后臺使用SpringBoot的開發架構,數據的抓取分三步。第一步是從公布的前300名的博客列表,第二步是循環所有的博客列表,再打開的頁面中來獲取IP歸屬地,第三步就是將獲取的數據插入到數據庫中。首先來講解第一步,如何利用Jsoup來抓取數據,示例代碼如下:
@Test
public void FetchCsdnBlogStart2024() throws Exception {List<CsdnBlogStar> blogStarList = new ArrayList<CsdnBlogStar>();Document doc = Jsoup.connect(blog_site_2024).ignoreContentType(true).timeout(300000).header("referer","https://blog.csdn.net").header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8") .header("Accept-Encoding", "gzip, deflate, sdch").header("Accept-Language", "zh-CN,zh;q=0.8").get();Elements tableElements = doc.getElementsByTag("table");Element final_top300 = tableElements.get(1);Integer year = 2024;Elements rows = final_top300.getElementsByTag("tr");List<CsdnBlog> csdnBlogList = new ArrayList<CsdnBlog>();List<CsdnBlogRank> blogRandList = new ArrayList<CsdnBlogRank>();List<CsdnBlogExt> blogExtList = new ArrayList<CsdnBlogExt>();for(int i = 1;i< rows.size();i++) {Element row = rows.get(i);String blogHref = row.getElementsByTag("a").attr("href");//System.out.println("225==" + blogHref);// 獲取<tr>中的所有<td>元素Elements cells = row.getElementsByTag("td");String sno = cells.get(0).text();String nickName = cells.get(1).text();String blogHome = cells.get(2).text();Integer rank = Integer.valueOf(cells.get(7).text());CsdnBlogStar star = new CsdnBlogStar(sno, nickName,"", blogHome,blogHref, rank,year);blogStarList.add(star);System.out.println(star);Long size = csdnBlogService.getSizeByCsdnBlogHref(blogHref);System.out.println("size===>" + size);//數據庫中未存在再入庫if(size <= 0) {Long csdnBlogId = IdWorker.getId();CsdnBlog csdnBlog = new CsdnBlog(nickName, "", blogHome, blogHref);csdnBlog.setPkId(csdnBlogId);CsdnBlogRank blogRank = new CsdnBlogRank(csdnBlogId, rank, year);CsdnBlogExt blogExt = FetchBlogExtInfo(blogHref);blogExt.setBlogInfoId(csdnBlogId);csdnBlogService.save(csdnBlog);csdnBLogRandService.save(blogRank);csdnBlogExtService.save(blogExt);}}System.out.println("finished");
}
????????在抓取綜合排名博客后,在來抓取其IP所在地和其他的業務信息,業務實現代碼如下:
private CsdnBlogExt FetchBlogExtInfo(String blogHref) throws Exception {Document doc = Jsoup.connect(blogHref).ignoreContentType(true).timeout(300000).header("referer","https://blog.csdn.net").header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8") .header("Accept-Encoding", "gzip, deflate, sdch").header("Accept-Language", "zh-CN,zh;q=0.8").get();String provinceName = doc.getElementsByClass("address").text().replaceAll("IP 屬地:", "");Elements userProfileHeadInfo = doc.getElementsByClass("user-profile-head-info-r-c");String accessTotalStr = userProfileHeadInfo.select(" ul > li:eq(0) .user-profile-statistics-num ").text();String originalTotalStr = userProfileHeadInfo.select(" ul > li:eq(1) .user-profile-statistics-num ").text();String fansTotalStr = userProfileHeadInfo.select(" ul > li:eq(3) .user-profile-statistics-num ").text();accessTotalStr = accessTotalStr.indexOf(",") < 0 ? accessTotalStr : accessTotalStr.replaceAll(",", "");originalTotalStr = originalTotalStr.indexOf(",") < 0 ? originalTotalStr : originalTotalStr.replaceAll(",", "");fansTotalStr = fansTotalStr.indexOf(",") < 0 ? fansTotalStr : fansTotalStr.replaceAll(",", "");Integer accessTotal = StringUtils.isEmpty(accessTotalStr) ? 0 : Integer.valueOf(accessTotalStr);//總訪問量Integer originalTotal = StringUtils.isEmpty(originalTotalStr) ? 0 : Integer.valueOf(originalTotalStr);//原創數Integer fansTotal = StringUtils.isEmpty(fansTotalStr) ? 0 : Integer.valueOf(fansTotalStr);//粉絲數return new CsdnBlogExt(provinceName, accessTotal, originalTotal, fansTotal);
}
?????????在獲取博客的IP歸屬地后,使用下面的代碼進行地點替換:
doc.getElementsByClass("address").text().replaceAll("IP 屬地:", "");//所屬省份名稱
????????獲取以上的數據后,我們來數據庫中看下具體的數據,執行sql如下:
select t1.nick_name,t1.blog_home,t1.blog_href,t2.rank,t2.year,
t3.province_name
from biz_csdn_blog t1,biz_csdn_blog_rank t2 ,biz_csdn_blog_ext t3
where t1.pk_id = t2.blog_info_id
and t1.pk_id = t3.blog_info_id
?????????執行之后,我們來看一下具體的數據:
3、空間查詢分析實踐
????????為了實現對排名前300的數據進行簡單分析,這里將按照各省份來進行排名和查詢。將這三張表進行聯合查詢的SQL如下:
SELECTt1.nick_name,t1.blog_home,t1.blog_href,t2.RANK,t2.YEAR,t3.province_name,t3.pk_id
FROMbiz_csdn_blog t1,biz_csdn_blog_rank t2,biz_csdn_blog_ext t3
WHEREt1.pk_id = t2.blog_info_id AND t1.pk_id = t3.blog_info_id;
????????得到的查詢結果如下:
????????請注意,在采集博主的IP歸屬地時,有的博主的歸屬地是不準確的,因此需要額外的手動修正。 修正的方式主要是通過首頁的相關信息,比如從最近的評論列表中尋找IP,比如某博主,其IP歸屬地顯示是A,在評論中卻是廣東省,因此需要結合最新的數據來進行過濾。空間查詢且進行排名的SQL如下:
SELECT ta.province_name,COUNT ( 1 ) total
FROM (SELECT t1.nick_name,t1.blog_home,t1.blog_href,t2.RANK,t2.YEAR,t3.province_name FROMbiz_csdn_blog t1,biz_csdn_blog_rank t2,biz_csdn_blog_ext t3 WHEREt1.pk_id = t2.blog_info_id AND t1.pk_id = t3.blog_info_id ) ta
GROUP BY ta.province_name
ORDER BY total DESC;
?????????執行以后在客戶端軟件可以看到以下信息:
三、數據成果挖掘
????????研究博客之星的省域分布,不僅有助于理解數字內容生產的區域差異,也為區域文化與經濟發展的研究提供了新的視角。通過分析博客創作者的地理分布,我們可以發現區域數字基礎設施的建設水平、教育資源的分配狀況以及文化氛圍的塑造能力對內容創作的影響。這些發現對于推動區域均衡發展、優化數字資源配置具有重要的政策意義。
1、省域分布解讀
????????首先我們來看一下這300位博主的空間分布情況,按照前300名的分布如下:
????????可以很明顯的看到,在前300名中,廣東省的人數最多,達到了52人,其次是北京37人,浙江和江蘇并列第三,分別25人,第五名是上海市23人。博主所在省份湖南前300名有11人上榜。?
????????按照排名來進行人員篩選sql如下:
SELECT ta.province_name,COUNT ( 1 ) total
FROM (SELECT t1.nick_name, t1.blog_home,t1.blog_href,t2.RANK,t2.YEAR,t3.province_name FROMbiz_csdn_blog t1,biz_csdn_blog_rank t2,biz_csdn_blog_ext t3 WHEREt1.pk_id = t2.blog_info_id AND t1.pk_id = t3.blog_info_id AND t2."rank" <= 200 ) ta GROUP BYta.province_name
ORDER BYtotal DESC;
?????????前100名的省域分布如下,廣東依然是名列前茅,北京緊隨其后:
廣東省?? ?18????????北京市?? ?15????????上海市?? ?9????????江蘇省?? ?8????????浙江省?? ?6
湖南省?? ?4????????四川省?? ?4????????山東省?? ?4????????湖北省?? ?3????????河北省?? ?3
福建省?? ?3????????天津市?? ?3????????吉林省?? ?3????????安徽省?? ?3
????????前50名的省域分布、可以看到,廣東省依然領先:
?廣東省?? ?8????????北京市?? ?8????????江蘇省?? ?5????????浙江省?? ?5????????湖南省?? ?2????????河北省?? ?2
上海市?? ?2????????四川省?? ?2????????天津市?? ?2????????山東省?? ?2????????吉林省?? ?2????????安徽省?? ?2
湖北省?? ?2????????阿聯酋?? ?1????????甘肅省?? ?1????????黑龍江省?? ?1????????陜西省?? ?1????????河南省?? ?1
江西省?? ?1????????福建省?? ?1
????????前30省域分布,在前30名中,北京稍微領先一個人,廣東依然有恐怖的5個:?
北京市?? ?6????????廣東省?? ?5????????上海市?? ?2????????湖北省?? ?2????????河北省?? ?2????????江蘇省?? ?2
山東省?? ?2????????浙江省?? ?2????????天津市?? ?1????????河南省?? ?1????????湖南省?? ?1????????阿聯酋?? ?1
四川省?? ?1????????陜西省?? ?1????????安徽省?? ?1
????????前10的省域分布如下,可以看到在前10名的分布中,北京獨占鰲頭,有4個,很多省份已經完全沒有了上榜博主
北京市?? ?4????????上海市?? ?1????????湖北省?? ?1????????天津市?? ?1????????陜西省?? ?1????????阿聯酋?? ?1
江蘇省?? ?1?
????????最后來看下前10的具體分布,可以看到,第一、五、六、九名在北京、第二名上海,第三名海外,第四名天津市,第七名陜西省,第八名是江蘇省,第十是湖北的,第十一是廣東省:
????????綜合可以看到,位于北京的博主還是非常多,而且排名比較靠前。?
2、技術開發活躍
????????博客之星的空間分布還為我們提供了一個觀察當代社會文化變遷的窗口。通過分析不同地區的博客內容主題與風格,我們可以洞察區域文化特質的演變,以及全球化與本土化之間的張力。這種研究不僅具有學術價值,也為文化政策的制定與文化產業的發展提供了實踐指導。通過上面的分析結果不難看出,津京冀地區的技術開發活躍度比較高,在活動中的整體排名較好。除此之外,長三角(江蘇、上海、浙江)的頭部排名也不錯,一個中部省份湖北省和西部省份陜西在本次評選中脫穎而出。通過區域的分布可以看到,經濟越發達的地區,技術活躍度越高。當然,受限于采用的樣本數量問題,因此分析的視角僅代表個人意見。
四、總結
????????以上就是本文的主要內容,本文以2024年全網Top300博客之星為研究對象,試圖通過數據可視化與深度分析,揭示博客創作者在地理空間上的分布規律,并探討其背后的社會動因與文化邏輯。2024年博客之星的省域空間分布,是數字時代區域發展與文化表達的一面鏡子。通過對這一現象的深入分析,我們不僅能夠更好地理解當代網絡內容生態的運行邏輯,也能為區域文化的傳承與創新提供新的思路。本文將通過數據可視化與案例分析,展示博客之星的地理分布規律,為讀者呈現一幅數字時代區域發展的文化圖景。