爬取CSDN博文到本地(包含图片,标签等信息)

文章目录

  • csdnToMD
    • 改进
    • 将CSDN文章转化为Markdown文档
    • 那有什么办法快速得到md文档?
    • 例如:
      • 获取单个文章markdown
      • 获取所有的文章markdown
    • 项目中待解决的问题

csdnToMD

项目原作者:https://gitee.com/liushili888/csdn-is—mark-down

改进后仓库地址:https://github.com/Xiamu-ssr/csdnToMD

改进

这里进行一定的改进,可以更准确获取时间,也可以选择图片的存放方式是否集中或分离到每篇文章的同名文件夹,以适应部分md扩展语法,比如{% asset_img 1.png %}

爬取结果截图
在这里插入图片描述
在这里插入图片描述

将CSDN文章转化为Markdown文档

很多情况下,我们需要将CSDN中的文章转化为markdown文档,直接复制全文是不可以的,CSDN不支持。

那有什么办法快速得到md文档?

原理:

  • 由于CSDN不是获取数据不是前后端分离的,所以无法根据接口获取文章的所有数据,它的数据是和页面元素组合在一起的,需要根据页面中的元素标签转化为markdown中的元素标签。
  • 使用jsoup解析csdn文档
  • 利用jericho-htmlflexmark-alljsoupselenium等工具将html文档转化为markdown文档

使用:

  • https://googlechromelabs.github.io/chrome-for-testing/下载chromedriver,解压后修改DynamicScraperTime函数的驱动地址。如果不下载驱动也可以,把String time = DynamicScraperTime(startUrl);的获取换成下一行被注释的就行,但是因为页面动态加载的原因,会无法获取准确的时间。
  • 然后直接将CSDN文章的url放入crawler类即可

例如:

获取单个文章markdown

public class Main {
    private static final String CSDN_URL = "https://blog.csdn.net/m0_51390969/";

    public static void main(String[] args) {
        AbstractCrawler crawler = new CsdnCrawler();
        crawler.crawlOne("https://blog.csdn.net/m0_51390969", "131172667");
    }
}

获取所有的文章markdown

public class Main {
    private static final String CSDN_URL = "https://blog.csdn.net/m0_51390969/";

    public static void main(String[] args) {
        AbstractCrawler crawler = new CsdnCrawler();
        crawler.crawl(CSDN_URL);
    }
}

项目中待解决的问题

在这里插入图片描述

TODO ‘> ’标签中包含代码块,需要处理

TODO 代码中格式待处理

TODO 增加GUI页面

TODO 公式、表格标签的处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux-账号和权限管理

目录 一、管理用户账号 1、用户账号类型 2、UID--身份标识 3、UID的分类 ​4、用户账号文件​ 5、chage-修改账号密码 5.1、chage—使用格式: 5.2、chage—使用参数: ​6、添加用户账号与管理 6.1、useradd—添加用户 6.2、passwd—设置/修改…

(创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据

目录 一、主要内容: 二、运行效果: 三、VMD-BiLSTM负荷预测理论: 四、代码数据下载: 一、主要内容: 本代码结合变分模态分解( Variational Mode Decomposition,VMD) 和卷积神经网络(Convolutional neu…

【0基础学爬虫】爬虫基础之自动化工具 Appium 的使用

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…

目标检测——SCUT-HEAD:大规模人头检测数据集的深度剖析

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 在…

Python学习打卡:day11

day11 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1183、自定义 Python 包创建包导入包方式1方式2方式3方式4 84、安装第三方包安装第三方包——pippip的网络优化 安装第三方包——PyCharm 85、…

小林图解系统-三、操作系统结构

Linux 内核 vs Windows 内核 内核 作为应用连接硬件设备的桥梁,保证应用程序只需要关心与内核交互,不需要关心硬件的细节 内核具备四个基本能力: 管理进程、线程,决定哪个进程、线程使用CPU,也就是进程调度的能力&a…

openh264 帧级码率控制原理:RcCalculateIdrQp 函数

RcCalculateIdrQp函数 功能 在码控中,当eSliceType为I_SLICE时 计算 IDR 帧的帧级量化参数QP 值。 原理过程 初始化变量: dBpp:初始化为0,用来存储比特率每像素(bits per pixel)的值。i:一个…

nginx的正向代理

目录 1 正向代理 1.1 使用正向代理的作用 1.2 Nginx正向代理实战 1.2.1 下载对应版本的nginx(源码编译) 1.2.2 下载 https 代理模块 1.2.3 使用https代理模块对源代码修改 1.2.4 源码安装 1.2.5 编写systemd 服务单元 1.2.6 修改nginx的主配置文件 1.2.…

虚拟现实环境下的远程教育和智能评估系统(十一)

视频帧画面知识点区域划分 知识点区域精确分割技术: 在深度学习检测模型结果基础上使用基于交并比(IoU)阈值的目标合并算法,合并过度重合目标区域面积,实现知识点区域精确分割 多模态知识点内容匹配策略: 图像:利用…

【人工智能,机器学习,统计学习,科学表征】开源商用与研发合作

个体工户linjing-lab托管在Github,现公开招募商用与合作人员,目标人群分为以下几个方向: 数学、信息科学、计算机专业的大学高年级学生,熟悉C和面向对象模型,擅长Pybind11编译算子到Python环境。26岁以下的大学本科毕…

PDF文档翻译软件哪个好?分享5款快速翻译的工具

世界各地的交流日益密切,文档翻译服务因此变得不可或缺。 无论是企业间的跨国商务合同,还是学术领域的专业研究论文,准确无误地将文档内容翻译成目标语言,对于保障信息的清晰传达和正确理解极为关键。 在这样的背景下&#xff0…

今日分享:中国石油年金系统交互、视觉设计和vue开发

金融系统交互及UI设计时,需注意简洁明了、色彩合理、字体统一、交互易用、安全感和用户控制。确保用户快速理解、安全操作并提升体验。

JavaScript:at()方法遇到的问题并解决

目录 第一章 前言 第二章 使用at方法 第三章 分析原因并解决问题 第一章 前言 最近上线了一个项目,测试过程中并没有什么问题,但是上线后使用的用户多了,结果出现了这么一个问题:.at方法对低版本手机的浏览器不兼容问题&#x…

英伟达中国特供芯片降价背后:巨头与市场的较量

英伟达,这家曾经在人工智能芯片领域独领风骚的巨头,近期在中国市场遭遇了一些挑战。为了应对来自华为等中国本土企业的竞争,英伟达不得不采取降价策略,调整其专为中国市场打造的H20芯片价格,甚至低于华为的同类产品。这…

STM32 串口通讯

使用STM32的串口通讯,接收串口助手的数据,并且将接收到的数据返回串口,重定义printf功能。 配置引脚信息 由于每次新建工程都需要配置信息,比较麻烦,好在STM32CubeIDE提供了导入.ioc文件的功能,可以帮我们…

Flutter【组件】按钮

简介 flutter 按钮组件。提供一种封装按钮组件的思路,并不支持过多的自定义属性。根据使用场景及设计规范进行封装,使用起来比较方便。 github地址:https://github.com/ThinkerJack/jac_uikit pub地址:https://pub.dev/package…

Faiss:加速大规模数据相似性搜索的利器

在机器学习和数据挖掘领域,相似性搜索是一项基本且重要的任务,它涉及到在大型数据集中找到与特定对象最相似的对象。Faiss是一个由Facebook AI Research开发的库,专门用于高效地进行相似性搜索和聚类,它之所以重要,是因…

uni-app的uni-list列表组件高效使用举例 (仿知乎日报实现)

目录 前言 uni-list组件介绍 基本使用 高级配置与自定义 仿知乎日报实现 知乎的api接口 后台服务实现 知乎日报首页 轮播图界面实现 客户端接口实现 uni-list列表使用 插入日期分割线 下滑分页的实现 完整页面代码 其他资源 前言 在移动应用开发领域&#xff0…

2024年【N1叉车司机】作业考试题库及N1叉车司机实操考试视频

题库来源:安全生产模拟考试一点通公众号小程序 2024年N1叉车司机作业考试题库为正在备考N1叉车司机操作证的学员准备的理论考试专题,每个月更新的N1叉车司机实操考试视频祝您顺利通过N1叉车司机考试。 1、【多选题】《中华人民共和国特种设备安全法》第…

JavaWeb之JSON、AJAX

JSON 什么是JSON:JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式(JavaScript提供) 特点 [{"name":"周珍珍", "age":18},{"name":"李淑文","age":20}]数据是以键值对形式…