Java爬取部落格文章

來源:互聯網
上載者:User

標籤: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爬取部落格文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.