前言

近期本人在某云上购买了个人域名,本想着以后购买与服务器搭建自己的个人网站,由于需要筹备的太多,暂时先搁置了,想着先借用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文件,以便完善个人博客内容,未完待续~~~

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2kglkq1jyzc4w

Java爬取网络博客文章的更多相关文章

  1. windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息

    scrapy作为流行的python爬虫框架,简单易用,这里简单介绍如何使用该爬虫框架爬取个人博客信息.关于python的安装和scrapy的安装配置请读者自行查阅相关资料,或者也可以关注我后续的内容. ...

  2. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  3. python 爬虫 爬取序列博客文章列表

    python中写个爬虫真是太简单了 import urllib.request from pyquery import PyQuery as PQ # 根据URL获取内容并解码为UTF-8 def g ...

  4. JAVA爬虫挖取CSDN博客文章

    开门见山,看看这个教程的主要任务,就去csdn博客,挖取技术文章,我以<第一行代码–安卓>的作者为例,将他在csdn发表的额博客信息都挖取出来.因为郭神是我在大学期间比较崇拜的对象之一.他 ...

  5. Hello Python!用 Python 写一个抓取 CSDN 博客文章的简单爬虫

    网络上一提到 Python,总会有一些不知道是黑还是粉的人大喊着:Python 是世界上最好的语言.最近利用业余时间体验了下 Python 语言,并写了个爬虫爬取我 csdn 上关注的几个大神的博客, ...

  6. Python爬虫学习之正则表达式爬取个人博客

    实例需求:运用python语言爬取http://www.eastmountyxz.com/个人博客的基本信息,包括网页标题,网页所有图片的url,网页文章的url.标题以及摘要. 实例环境:pytho ...

  7. Python 爬取CSDN博客频道

    初次接触python,写的很简单,开发工具PyCharm,python 3.4很方便 python 部分模块安装时需要其他的附属模块之类的,可以先 pip install wheel 然后可以直接下载 ...

  8. scrapy爬虫框架实例一,爬取自己博客

    本篇就是利用scrapy框架来抓取本人的博客,博客地址:http://www.cnblogs.com/shaosks scrapy框架是个比较简单易用基于python的爬虫框架,相关文档:http:/ ...

  9. Python爬虫:爬取自己博客的主页的标题,链接,和发布时间

    代码 # -*- coding: utf-8 -*- """ ------------------------------------------------- File ...

随机推荐

  1. s6-5 TCP 连接的建立

    TCP 连接的建立 采用三次握手建立连接 一方(server)被动地等待一个进来的连接请求 另一方(the client)通过发送连接请求,设置一些参数 服务器方回发确认应答 应答到达请求方,请求方最 ...

  2. weblogic获取应用目录路径(war包)

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  3. 分享几个写 demo 的思路

    好久没有动笔,最近发现了一个新的写 demo 的思路,非常有意思.仔细一想,自己仿佛积累了不少写 demo 的思路和想法,总结一下,抛砖引玉. 本文所说 demo 主要分以下三种: 本地 demo 外 ...

  4. B树/[oracle]connect BY语句

    读大神的书,出现很多没有见过的函数和便捷操作,特此记录 connect by 之前没有接触过,为了学习这个语句,先了解一下B树数据类型是最好的方法. [本人摘自以下博客] https://www.cn ...

  5. 下划线“_”在oracle中不是单纯的表示下划线的意思,而是表示匹配单一任何字符!

    [解决办法]1.使用 escape() 函数escape关键字经常用于使某些特殊字符,如通配符:'%','_'转义为它们原来的字符的意义,被定义的转义字符通常使用'\',但是也可以使用其他的符号.例如 ...

  6. eslint 的 env 配置是干嘛使的?

    这笔修改体现了 env 和 global 的关系: https://github.com/g8up/youDaoDict/commit/8b05616f 官方文档表述: https://eslint. ...

  7. war包远程部署访问不到问题解决过程总结

    项目完成后,先在本地ide测,用ide集成的tomcat,顺理发布,访问,然后放本地tomcat的webapp文件夹,顺理启动,访问,再放远程阿里云的tomcat的webapp文件夹,重启tomcat ...

  8. Django积木块11 —— 缓存

    缓存 Django的缓存可以缓存视图中的函数,模版中的内容,和一些不长变化的数据. # setting CACHES = { 'default':{ 'BACKEND':'django.core.ca ...

  9. JVM运行时数据区(一)

    1.名词解释: 栈帧:栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素. 2.程序计数器: 程序计数器是一块比较小的内存空间,可以将它看作是当前线程所执 ...

  10. 05 详解C# 迭代器

    迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式. 简单来说,迭代器模式使得你能够获取到序列中的所有元素 ...