资讯专栏INFORMATION COLUMN

java爬取博客园个人博客

leonardofed / 3394人阅读

摘要:本人以前也是搞过几年,由于公司的岗位职责,后面渐渐地被掰弯,现在主要是做前端开发。所以想利用爬取文章,再将爬取的转化成目前还未实现,欢迎各位同学指导。

java爬取博客园个人博客 前言

近期本人在某云上购买了个人域名,本想着以后购买与服务器搭建自己的个人网站,由于需要筹备的太多,暂时先搁置了,想着先借用GitHub Pages搭建一个静态的站,搭建的过程其实也曲折,主要是域名地址配置把人搞废了,不过总的来说还算顺利,网站地址 https://chenchangyuan.cn(空博客,样式还挺漂亮的,后期会添砖加瓦)

利用git+npm+hexo,再在github中进行相应配置,网上教程很多,如果有疑问欢迎评论告知。

本人以前也是搞过几年java,由于公司的岗位职责,后面渐渐地被掰弯,现在主要是做前端开发。

所以想利用java爬取文章,再将爬取的html转化成md(目前还未实现,欢迎各位同学指导)。

1.获取个人博客所有url

查看博客地址https://www.cnblogs.com/ccylo...

根据你自己写的博客数量进行遍历

将博客的详情页地址存放在set集合中,详情页地址https://www.cnblogs.com/ccylo...

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 urlLists = new TreeSet();
    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 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/chenchangy...

由于不想一篇篇的手动生成md文件,下一步需要将html文件批量的转化成md文件,以便完善个人博客内容,未完待续~~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76944.html

相关文章

  • 爬取博客首页数据进行数据分析

    摘要:目标选取了博客园,爬取了首页的前页文章,但是数据放在那一直没去分析。为了避免对博客园造成压力,爬虫代码不公开。注数据来源是年月日至月的博客园首页文章。谁是博客园最爱的用户最爱的用户,在这里是按文章上首页的数量来判断的。 前言 之前折腾了一小段时间scrapy,觉得使用起来异常简单,然后打算练练手。目标选取了博客园,爬取了首页的前200页文章,但是数据放在那一直没去分析。趁着现在有闲心,...

    zilu 评论0 收藏0
  • 爬取博客首页并定时发送到微信

    摘要:应女朋友要求,为了能及时掌握技术动向,特意写了这个爬虫,每天定时爬取博客园首页并发送至微信。 应女朋友要求,为了能及时掌握技术动向,特意写了这个爬虫,每天定时爬取博客园首页并发送至微信。 环境: Python3.4 第三方库 Requests:向服务器发送请求 BeautifulSoup4:解析Html wxpy:微信接口 Schedule:定时器 代码 # -*-coding:u...

    aaron 评论0 收藏0
  • 我是如何将博客转成PDF的

    摘要:但发现导出来的没有高亮语法没有语法高亮咋看啊,所以到这里我就放弃了,将就用一下博客园生成的吧爬虫学习上面提供的接口是一个生成一个文件,我是不可能一个一个将链接和标题放上去生成的因为博客园上发的也将近篇了。 前言 只有光头才能变强 之前有读者问过我:3y你的博客有没有电子版的呀?我想要份电子版的。我说:没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航去找来看呀..然后...

    mindwind 评论0 收藏0
  • 个人博客建站最全解析

    摘要:今天呢我想给大家,也给我自己,对我的个人网站做一个全面的整理和分析。首页上用户直接看得到的部分有导航栏和轮播大图当时写这个网站的设想是在年月份的时候。目前网上流行的个人博客页面。感谢框架对本网站的大力支持。大家好~又见面了。 今天呢我想给大家,也给我自己, 对我的个人网站yanyy.cn/yanyy 做一个全面的整理和分析。 也给有这方面想法的朋友一个参考。 做网站的有爱好也有带有目的性的。...

    zlyBear 评论0 收藏0
  • 号称史上最牛逼的几篇博客整理(python+java+js等)

    摘要:百度网盘爬虫博客园上如何邀请好友注册您的网站博客园上如何爬取代理服务器博客园上百度图片爬虫开源中国上中文分词十分重要,推荐博客网站真分页代码该怎么写博客园上磁力爬虫源码公开上兼容所有浏览器的浏览器复制问题 号称史上最牛逼的几篇博客这个说法也许夸张了点,但总体来说楼主整理的博客都是楼主幸苦之作,并且都是围绕去转盘网展开,这些博客几乎透漏了该站的所有技术关键,细节,甚至所有核心代码,我个人...

    WrBug 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<