標籤:while 前言 img output mpi 一個 集合 nta import
前言
近期本人在某雲上購買了個人網域名稱,本想著以後購買與伺服器搭建自己的個人網站,由於需要籌備的太多,暫時先擱置了,想著先借用GitHub Pages搭建一個靜態站,搭建的過程其實也曲折,主要是網域名稱地址配置把人搞廢了,不過總的來說還算順利,網站地址 https://chenchangyuan.cn(空部落格,樣式還挺漂亮的,後期會添磚加瓦)
利用git+npm+hexo,再在github中進行相應配置,網上教程很多,如果有疑問歡迎評論告知。
本人以前也是搞過幾年java,由於公司的崗位職責,後面漸漸地被掰彎,現在主要是做前端開發。
所以想利用java爬取文章,再將爬取的html轉化成md(目前還未實現,歡迎各位同學指導)。
1.擷取個人部落格所有url
查看部落格地址https://www.cnblogs.com/ccylovehs/default.html?page=1
根據你自己寫的部落格數量進行遍曆
將部落格的詳情頁地址存放在set集合中,詳情頁地址https://www.cnblogs.com/ccylovehs/p/9547690.html
2.詳情頁url產生html檔案
遍曆set集合,依次產生html檔案
檔案存放在C://data//blog目錄下,檔案名稱由擷取的群組1產生
3.代碼實現
package com.blog.util;import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author Jack Chen * */public class BlogUtil { /** * URL_PAGE:cnblogs url * URL_PAGE_DETAIL:詳情頁url * PAGE_COUNT:頁數 * urlLists:所有詳情頁url Set集合(防止重複) * p:匹配模式 * */ public final static String URL_PAGE = "https://www.cnblogs.com/ccylovehs/default.html?page="; public final static String URL_PAGE_DETAIL = "https://www.cnblogs.com/ccylovehs/p/([0-9]+.html)"; public final static int PAGE_COUNT = 3; public static Set<String> urlLists = new TreeSet<String>(); public final static Pattern p = Pattern.compile(URL_PAGE_DETAIL); public static void main(String[] args) throws Exception { for(int i = 1;i<=PAGE_COUNT;i++) { getUrls(i); } for(Iterator<String> i = urlLists.iterator();i.hasNext();) { createFile(i.next()); } } /** * @param url * @throws Exception */ private static void createFile(String url) throws Exception { Matcher m = p.matcher(url); m.find(); String fileName = m.group(1); String prefix = "C://data//blog//"; File file = new File(prefix + fileName); PrintStream ps = new PrintStream(file); URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); String str; while((str = br.readLine()) != null){ ps.println(str); } ps.close(); br.close(); conn.disconnect(); } /** * @param idx * @throws Exception */ private static void getUrls(int idx) throws Exception{ URL u = new URL(URL_PAGE+""+idx); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.connect(); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); String str; while((str = br.readLine()) != null){ if(null != str && str.contains("https://www.cnblogs.com/ccylovehs/p/")) { Matcher m = p.matcher(str); if(m.find()) { System.out.println(m.group(1)); urlLists.add(m.group()); } } } br.close(); conn.disconnect(); } }
4.結語
如果覺得對您有用的話,麻煩動動滑鼠給我一顆star,您的鼓勵是我最大的動力
https://github.com/chenchangyuan/getHtmlForJava
由於不想一篇篇的手動產生md檔案,下一步需要將html檔案批量的轉化成md檔案,以便完善個人部落格內容,未完待續~~~
Java爬取部落格文章