Jsoup解析下载优快云,博客园文章

【好物推荐】优快云博客文章解析 https://mark.cuckooing.cn/ ‌博客文章提取‌:用户可以轻松复制博客文章,并支持解析提取优快云、博客园、简书等平台的文章。所有文章都支持以Markdown格式下载,格式统一,复制时不会出现格式错乱现象‌。 阅读详情

参考其他博主的文章,并在原来的基础上添加了博客园文章下载的方式,本来想引用一下原文的,但是发现找不到了,后面找到了再把原博客链接补上


import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 *
 * Jsoup解析网页
 *      maven依赖
 *       <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
 *         <dependency>
 *             <groupId>org.jsoup</groupId>
 *             <artifactId>jsoup</artifactId>
 *             <version>1.13.1</version>
 *         </dependency>
 *         <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
 *         <dependency>
 *             <groupId>org.apache.poi</groupId>
 *             <artifactId>poi</artifactId>
 *             <version>4.1.2</version>
 *         </dependency>
 *         <!-- https://mvnrepository.com/artifact/org.apache.directory.studio/org.apache.commons.io -->
 *         <dependency>
 *             <groupId>org.apache.directory.studio</groupId>
 *             <artifactId>org.apache.commons.io</artifactId>
 *             <version>2.4</version>
 *         </dependency>
 *
 */
public class JsoupDownload {

    public static void main(String[] args) throws IOException, URISyntaxException {

        //下载地址
        String download="F:/upload/xxxx.html";
        // String doc="F:/upload/jxl-excel.doc";
        
        //优快云网页url
        String uri="https://blog.youkuaiyun.com/Sun_Loading/article/details/125892377";
        //下载
        write优快云HtmlFile(uri,new File(download));
        //write优快云WordFile(uri,new File(doc));

        //博客园下载
        //String b_uri="https://www.cnblogs.com/glb79809-glb/p/14365629.html";
        //writeBKYHtmlFile(b_uri,new File(download));
        //下载doc
        //String doc="F:/upload/nodejs的版本管理工具nvm1.docx";
        //writeBKYWordFile(b_uri,new File(doc));



    }

    public static void test1() throws IOException {
        Document document = Jsoup.connect("http://www.baidu.com").get();
        System.out.println(document.title());

    }


    /**从csdn截取正文
     * @param uriStr
     * @throws IOException
     */
    public static void write优快云HtmlFile(String uriStr,File localFile) throws IOException {
        FileUtils.writeStringToFile(localFile,readHtml(uriStr),"UTF-8");
    }

    /**从bky截取正文
     * @param uriStr
     * @throws IOException
     */
    public static void writeBKYHtmlFile(String uriStr,File localFile) throws IOException {
        FileUtils.writeStringToFile(localFile,readHtmlBKY(uriStr),"UTF-8");
    }

    /**从csdn截取正文
     * @param uriStr
     * @throws IOException
     */
    public static void write优快云WordFile(String uriStr,File wordFile)  {
        writeDocFile(wordFile,readHtml(uriStr),"UTF-8");
    }

    /**从博客园截取正文
     * @param uriStr
     * @throws IOException
     */
    public static void writeBKYWordFile(String uriStr,File wordFile)  {
        writeDocFile(wordFile,readHtmlBKY(uriStr),"UTF-8");
    }
    
    /**
     * 从csdn读取和加工正文
     * @param uriStr
     * @return
     */
    private static String readHtml(String uriStr){
        StringBuffer sb=new StringBuffer();
        sb.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">");
        try {
            URI uri=new URI(uriStr);
            Document doc= Jsoup.parse(uri.toURL(),10000);
            //解决页面不能复制的问题
            Elements style = doc.select("style");
            style.remove(0);
            sb.append(style.outerHtml());
            Elements elements=doc.select("link[rel=\"stylesheet\"]");
            String url=null;
            for(Element element:elements){
                url=element.attr("href");
                sb.append("<style type=\"text/css\" url='");
                sb.append(url);
                sb.append("'>");
                sb.append(IOUtils.toString(new URI(url),"UTF-8"));
                sb.append("</style>");
                sb.append("\r\n");
            }
            sb.append("<style type=\"text/css\">");
            sb.append("#article_content,.fontclass{font-family:\"Microsoft YaHei\"}");
            sb.append("</style>");
            sb.append("</head><body style=\"padding: 100px\">");
            sb.append("<h1 class='title-article'>下载地址:<b>").append(uriStr).append("</b></h1>");
            doc.select("#article_content p").toggleClass("fontclass");
            sb.append(doc.select(".blog-content-box").html());
            sb.append("</body></html>");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

    /**
     * 博客园
     * @param uriStr
     * @return
     */
    private static String readHtmlBKY(String uriStr){
        StringBuffer sb=new StringBuffer();
        sb.append("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">");
        try {
            URI uri=new URI(uriStr);
            Document doc= Jsoup.parse(uri.toURL(),10000);
            sb.append(doc.select("style").outerHtml());
            Elements elements=doc.select("link[rel=\"stylesheet\"]");
            String url=null;
            for(Element element:elements){
                url=element.attr("href");
                sb.append("<style type=\"text/css\" url='");
                sb.append(url);
                sb.append("'>");
                sb.append(IOUtils.toString(new URI("https://www.cnblogs.com"+url),"UTF-8"));
                sb.append("</style>");
                sb.append("\r\n");
            }
            sb.append("<style type=\"text/css\">");
            sb.append("#article_content,.fontclass{font-family:\"Microsoft YaHei\"}");
            sb.append("</style>");
            sb.append("</head><body style=\"padding: 100px\">");
            sb.append("<h1 class='title-article'>下载地址:<b>").append(uriStr).append("</b></h1>");
            doc.select("#article_content p").toggleClass("fontclass");
            sb.append(doc.select("#topics").outerHtml());
            sb.append("</body></html>");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
    }

    public static boolean writeDocFile( File file, String html,String encoding) {
        boolean w = false;
        File fileDir=file.getParentFile();
        if (!fileDir.exists()) {
            fileDir.mkdirs();
        }
        try {
            byte b[] = html.getBytes(encoding);
            ByteArrayInputStream bais = new ByteArrayInputStream(b);
            POIFSFileSystem poifs = new POIFSFileSystem();
            DirectoryEntry directory = poifs.getRoot();
            DocumentEntry documentEntry = directory.createDocument(
                    "WordDocument", bais);
            FileOutputStream ostream = new FileOutputStream(file);
            poifs.writeFilesystem(ostream);
            bais.close();
            ostream.close();
        }catch(IOException e){
            e.printStackTrace();
        }
        return w;
    }
}

csdn下载效果
在这里插入图片描述

博客园下载效果
在这里插入图片描述

下 载 链 接 解 析 工 具 下载链接解析工具下载链接解析工具下载链接解析工具 立即下载

相关推荐

各类下载地址解析_下载地址解析_

解析迅雷、快车等下载地址出真实地址。其中liujiami.DecodeBase64函数实际就是Base64普通的解密功能,可在网上自行下载。

通过URL解析下载资源

package com.tencent.UDP; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class Download { public static void main(String[] args) throws IOExcept.

ଳxin的博客 2024

别再死磕RD算法了!用MATLAB手把手复现SAR后向投影(BP)成像(附完整代码与避坑点)

本文详细介绍了如何使用MATLAB实现合成孔径雷达(SAR)后向投影(BP)成像算法,突破传统RD算法在大斜视和复杂轨迹场景中的局限。通过完整的代码示例和避坑指南,帮助读者掌握BP算法的核心原理、内存优化策略和并行计算技巧,提升SAR成像精度与效率。

weixin_30908103的博客 296

下载权限控制机制(转)

下载权限控制机制 要对下载的权限进行精确的控制(防止盗链,防止迅雷吸血,下载扣除积分等虚拟货币),以前接触的方法有几种:1、通过rewrite不断地更改下载文件的url,并插入很多无意义的字符;2、验证下载链接的来路,或者cookie;3、通过服务器端程序(例如一个php文件),open文件,读取内容然后返回给客户端。 第一种方法很笨,而且吃力不讨好;第二种方法很容易破解,因为ref...

weixin_30530339的博客 353

【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级)

1. 简介 卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。详情见:卡尔曼滤波简介 MPU6050的解算主要有三种姿态融合算法:四元数法 、一阶互补算法和卡尔曼滤波算法。我们常用的DMP库使用的是四元数法,本文采用卡尔曼滤波算法,使用RT-Thread国产操作系统,利用env工具进行串口、模拟IIC环境配置,使用10ms的线程进行卡尔曼滤波解算。 2.

weixin_44549777的博客 3万+

单片机入门说明书:从本质到架构,一文看透MCU核心原理

其实你每天用的洗衣机、刷的智能门锁、开的汽车里,都藏着它的身影。相当于工厂里的“运输轨道”,CPU算出的结果通过总线送到RAM存储,ROM里的程序通过总线传给CPU执行,外设的信号通过总线交给CPU处理,整个过程每秒能重复上百万次,确保各模块协同高效。高端单片机(比如STM32F4系列)还会配备DMA(直接存储器访问)单元,相当于“专用传送带”——不需要CPU干预,就能直接让外设和RAM之间传输数据(比如让ADC采集的温度数据直接存进RAM),大大降低CPU负担,让CPU能专注处理更重要的任务。

IAMIF12的博客 1038

博客搬家系列(二)-爬取优快云博客

博客搬家系列(二)-爬取优快云博客 一.前情回顾  博客搬家系列(一)-简介:https://blog.csdn.net/rico_zhou/article/details/83619152  博客搬家系列(三)-爬取博客园博客:https://blog.csdn.net/rico_zhou/article/details/83619525  博客搬家系列(四)-爬取简书文章:https...

rico_zhou的博客 889

从问卷到结论:手把手教你用SPSS 28完成一份完整的社科数据分析报告

本文详细介绍了如何使用SPSS 28完成社会科学研究中的数据分析报告,从问卷数据导入、清洗到描述性和推断性统计分析,再到结果呈现与报告撰写。通过实际案例演示,帮助研究者掌握SPSS 28的核心功能,提升数据分析效率与报告质量。

weixin_28717431的博客 248

博客搬家系列(一)-简介

这个功能思来想去想了很久,终于实现了基本功能,自己基于别人的后台权限管理系统写了一个博客系统,其实博客系统只是一小部分,但今天只讲博客部分,其他详见: RZSpider详见:https://blog.csdn.net/rico_zhou/article/details/83618255    https://www.rzspider.top      U:testadmin   P:testad...

rico_zhou的博客 2216

【车辆仿真】从0开始建立dSPACE RT Simulink工程:CAN通信(RTICANMM方法)

【工程环境信息】:本文基于链接文章搭建SCALEXIO Rack RTPC总线节点,用于与AutoBox通信硬件:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):AutoBox (DS1006)板卡:DS6342软件:本文所使用的DBC链接提示:以下是本篇文章正文内容,下面案例可供参考!!!的部分一定记得配置,其他的按需配置RTICANMM的灵活度非常高,尽可能参考Help文档,理解相应的配置内容官方有RTICANMM的样例工程,在下方路径。

winnizap的博客 2381

从菜鸟到大神:VSCode助力HTML开发全攻略

本文全面介绍 VSCode 在 HTML 开发中的高效应用。先引导读者完成 VSCode 的安装与个性化设置,助其快速适应开发环境;接着推荐 Live Server、Prettier 等实用插件,实现实时预览、代码格式化等功能,提升开发效率。通过详细的开发实战步骤,从新建文件到添加样式,带领读者掌握 HTML 基础结构与常用标签使用。还分享代码片段管理、多人协作等进阶技巧,解决常见开发问题。旨在帮助开发者利用 VSCode,轻松高效完成 HTML 开发,打造优质网页。

邓邓子的博客 3364

IT资讯--------抓取各个博客上的文章

优快云 的博客文章 : 1.文章的信息: public class NewsItem { private int id; //标题 private String title; //链接 private String link; //发布时间 private String date; //图片链接 private St

linhaosheng123456的博客 770

【异常】OpenClaw调用火山引擎大模型提示词 Agent failed before reply: All models failed (6): volcengine/kimi-k2-5-26

摘要: 本文针对OpenClaw调用火山引擎大模型服务时触发的全量熔断报错(All models failed)提供全链路排查方案。报错核心为服务熔断(cooldown)和模型不可用(model_not_found),主要源于账号权限、API凭证失效或模型标识错误。解决方案按优先级分步实施:1)校验账号状态与AK/SK有效性;2)核对官方模型标识;3)重启服务解除熔断;4)修复配置文件;5)通过原生API测试定位网络或服务端问题。日志分析(openclaw logs)可快速识别HTTP状态码(如401/40

奶爸的编程之路,也就一周冷个三天 837

IT资讯---------查看文章

该App已经上传到百度应用市场:http://shouji.baidu.com/soft/item?docid=8928185&from=as&f=search_app_it%E8%B5%84%E8%AE%AF%40list_1_image%402%40header_all_input 有兴趣的可以下载看看。接下来我会公布源代码,不过该App并没有使用代码混淆,所以可以通过反编译清楚的看到源

linhaosheng123456的博客 539

Halcon学习之一维测量(3)

带定位器的测量。首先看一下“定位”是什么意思?回答:比如我们测量一个芯片,这时候我们设置一个测量矩形,来沿着测量目标进行测量。但是下一张当芯片的位置发生变化时,测量矩形的位置就不对了,就不是沿着测量目标了。这样就不对了!芯片在转,测量矩形也要跟着一起转才行。这个时候就需要“定位”来起作用了!定位之后得到这个芯片的旋转角度之后,测量矩形可以跟着这个角度转。这就是“定位”+“测量”,这是我们工业视觉常用的一个手法,在Halcon里面也是有例子展现的。

deep_love1314的博客 788

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【免费下载】 探索优快云下载器:高效获取优快云资源的利器

探索优快云下载器:高效获取优快云资源的利器 项目简介 是一个开源项目,旨在帮助开发者和学习者更便捷地下载优快云网站上的资源,包括但不限于代码、文章、评论等。通过自动化处理,它极大地节省了手动下载的时间,并提供了批量操作的可能性。 技术分析 此项目主要采用了Python语言编写,利用了requests库进行网络请求,BeautifulSoup库解析HTML内容,实现了对优快云网页的抓取和数据...

gitblog_00015的博客 8604

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

我的作品下载

下载页面:http://download.csdn.net/download/zhaopeng2511/4054700

zhaopeng2511的专栏 673

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

网络爬虫系列之二:对下载页面进行链接解析

在我的上一篇博客中,通过URL就已经成功下载了第一个页面。然后我第二步的工作就是要通过这个已经下载好的页面得到更多的URL。 在这篇博客中主要完成了对页面中的链接进行解析,并将它们拼成可以访问的样子。更多细致的工作需要在后面进行完善。

最后的晚餐 1万+

【免费下载】 优快云_Downloader:一键下载优快云资源的利器

优快云_Downloader:一键下载优快云资源的利器 项目简介 是一个开源项目,专为开发者设计,用于高效、便捷地下载优快云网站上的资源,如代码、文档等。借助此工具,你可以摆脱繁琐的手动操作,提高获取资料的速度。 技术分析 该项目采用了Python作为主要编程语言,利用了Selenium和BeautifulSoup库进行网页自动化和HTML解析。Selenium允许程序模拟真实用户的行为,而...

gitblog_00062的博客 1万+

全网最强在线解析源码

源码介绍: 各大视频网站全部支持,番剧完美支持还支持微云解析!  支持全网等短视频解析,无水印源码仅供参考! 请于下载后24小时内删除,严禁非法或商业用途! 网盘下载地址: http://www.bytepan.com/tKBLKiQlmgA 图片: ...

工具下载 7553

优快云博客下载器深度解析:构建个人技术知识库的终极解决方案

在信息爆炸的时代,技术内容的管理与保存已成为开发者的刚需。优快云博客下载器作为一款专业级内容备份工具,通过技术创新解决了知识资产的安全存储问题。本文将深入剖析其架构设计、性能优势及实际应用场景,为技术从业者提供全面的使用指南。 ## 技术痛点:为什么我们需要内容备份工具 在技术学习与工作中,开发者面临着多重内容管理挑战。首先是内容丢失风险,许多优质技术文章因平台政策调整或作者删除而消失。其次

gitblog_00307的博客 325

【免费下载】 优快云 下载器(Csdn_Downloader)安装及使用教程

优快云 下载器(Csdn_Downloader)安装及使用教程 1. 项目目录结构及介绍 该项目的目录结构如下: . ├── idea # IntelliJ IDEA 工程配置文件 ├── src # 源代码目录 │ └── com │ └── csdndownload # 主要代码包 ├── .gitignore ...

gitblog_00055的博客 4521

【代码解析】代码解析之文件下载(1)

这行代码定义了一个名为 download 的方法,它接受两个参数,一个是文件名( name ),一个是用于响应的 HttpServletResponse 对象。将从文件中读取的数据写入响应流,bytes 是字节数组,0是起始位置,len 是要写入的字节数(实际读取的字节数)声明一个整数变量len,并且初始化为-1,这个变量作用于存储从文件中读取的字节数。方法返回一个成功的响应,其中包含消息“ 接收成功”,这表明文件成功下载。来自于上文,文件上传,指定文件存放的目录。的一段代码,该代码写的是。

m0_67930426的博客 1006

稳定性工具下载地址

https://gitcode.com/Universal-Tool/040fb/?utm_source=article_gitcode_universal&index=top&type=card&&isLogin=1https://www.eclipse.org/downloads/download.php?file=/mat/https://developer.android.google.cn/ndk/downloads?hl=zh-cn

qq_58886807的博客 194

从网站上读取数据的方法

导读:   1.把文件下到本地   STDAPI URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);   STDAPI URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);   strIniURL= web

yingfox的专栏 1020

优快云博客下载器深度解析:构建个人离线知识库的强力工具

在信息爆炸的时代,技术博客已成为开发者获取知识的重要渠道。优快云博客下载器作为一款专业的离线知识管理工具,帮助开发者将宝贵的优快云技术文章保存到本地,打造专属的离线知识库。通过智能化的爬取机制和优雅的MVC架构设计,这款工具不仅解决了技术资料难以系统化管理的痛点,更为开发者提供了高效的知识沉淀解决方案。 ## 一、架构解析:三层架构驱动的智能下载引擎 优快云博客下载器采用经典的MVC(M

gitblog_00703的博客 259
上一篇: 将百度地图下载为图片-自定义尺寸
Sun_Loading
博客等级 码龄9年 1粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值