copy outerHTML、python爬取csdn文章、一键打包个人csdn文章保存到本地

2023-05-16

文章目录

    • 1copy outerHTML复制网站源码法
      • 1.1复制源码
      • 1.2 遇到的问题
    • 2 python爬取CSDN博客文章(保存为html,txt,md)
      • 2.1 安装依赖
      • 2.2 完整代码
    • 3 一键打包个人的csdn博客文章
      • CSDN文章打包下载

有时候遇到自己喜欢的博客,除了收藏点赞外,转载一下也是不错的选择,下面记录一下转载的过程及遇到的问题。
为了防止源文章删除,转载并保存到本地也是有必要的。

下面介绍三种方法,转载博客的方法

1copy outerHTML复制网站源码法

1.1复制源码

打开想要转载的博客界面:

  1. 右键->检查,然后页面右侧出现html代码
  2. Ctrl+F搜索 #article_content ,可以看到,源码中
    被选中,对应着网页中的博客内容被选中,如下图所示。当然你也可以尝试点击选中别的代码块,就可以看到对应的博客内容被选中。
    在这里插入图片描述
  3. 将鼠标放进上图所示的红框中,右键-> 复制 ->copy outerHTML,把内容复制下来,然后打开自己的Markdown编辑器,在里面粘贴即可。

1.2 遇到的问题

问题1:文章开头有大幅空白
如下图红框中,有大片的空白。
在这里插入图片描述
解决:
在这里插入图片描述
把绿框中的内容去掉,然后做相应的调整即可,最终版如下所示:
在这里插入图片描述

2 python爬取CSDN博客文章(保存为html,txt,md)

2.1 安装依赖

pip install html2text==2020.1.16
pip install lxml===4.6.3
pip install requests==2.26.0

2.2 完整代码

import requests
from html2text import HTML2Text
from lxml import etree
from html import unescape
import os
"""
requirements
打了箭头的才需要手动安装,其余是自动安装的依赖库
certifi==2021.10.8
charset-normalizer==2.0.7
cssselect==1.1.0
html2text==2020.1.16  --  <--
idna==3.3
lxml==4.6.3  -----------  <--
requests==2.26.0 -------  <--
urllib3==1.26.7
"""
 
 
def crawl(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36",
    }
    print("crawl...")
    # 配置header破反爬
    response = requests.get(url, headers=headers)
    # 200就继续
    if response.status_code == 200:
        html = response.content.decode("utf8")
        # print(html)
        tree = etree.HTML(html)
        print("look for text...")
        # 找到需要的html块
        title = tree.xpath('//*[@id="articleContentId"]/text()')[0]
        block = tree.xpath('//*[@id="content_views"]')
        # html
        ohtml = unescape(etree.tostring(block[0]).decode("utf8"))
        # 纯文本
        text = block[0].xpath('string(.)').strip()
        # print("html:", ohtml)
        # print("text:", text)
        print("title:", title)
        save(ohtml, text,title)
        # 完成!
        print("finish!")
    else:
        print("failed!")
 
 
def save(html, text,title):
    if "output" not in os.listdir():
        # 不存在输出文件夹就创建
        os.mkdir("output")
        os.mkdir("output/html")
        os.mkdir("output/text")
        os.mkdir("output/markdown")
    with open(f"output/html/{title}.html", 'w', encoding='utf8') as html_file:
        # 保存html
        print("write html...")
        html_file.write(html)
    with open(f"output/text/{title}.txt", 'w', encoding='utf8') as txt_file:
        # 保存纯文本
        print("write text...")
        txt_file.write(text)
    with open(f"output/markdown/{title}.md", 'w', encoding='utf8') as md_file:
        # 保存markdown
        print("write markdown...")
        text_maker = HTML2Text()
        # md转换
        md_text = text_maker.handle(html)
        md_file.write(md_text)
 
 
if __name__ == '__main__':
    # 你想要爬取的文章url
    url = ""
    crawl(url)

将上面完整的代码保存到本地记事本,改后缀名为.py
在这里插入图片描述
程序就会自动生成output文件夹了,其中有html,txt,md格式的文章了
参考资料
Xpath如何提取一个标签里的所有文本?_对明天的期待丶的博客-CSDN博客

python中HTML文档转义与反转义方法介绍_codingforhaifeng的博客-CSDN博客_python 反转义

html文件转md文件_OzupeSir-CSDN博客_html转md

两万字博文教你python爬虫requests库【详解篇】_孤寒者的博客-CSDN博客_python requests库

爬取CSDN博客文章

3 一键打包个人的csdn博客文章

打包自己的csdn文章,发现用富文本编辑器写的文章,打包下来,也是md格式,但打开后内容为空
所以尽量设置MarkDown编辑器为默认编辑器
请添加图片描述

CSDN文章打包下载

CSDN 没有提供文章导出功能,只有导入功能,所以我们可以用下述方式下载 CSDN 上的文章并保存成 Markdown 格式

  1. 登录CSDN: https://blog.csdn.net/

  2. 前往:https://blog-console-api.csdn.net/(出现404也没关系)

  3. 点击F12,在控制台()中输入下段代码并回车

var s=document.createElement('script');s.type='text/javascript';
document.body.appendChild(s);
s.src='//cdn.jsdelivr.net/gh/ame-yu/csdn-move@latest/dist/index.js';

在这里插入图片描述
4. CSDN上的文章就会被下载下来啦!
在这里插入图片描述
将下载打包的压缩包解压就可以看到文章了!
你用富文本编辑器写的文章,打包下载打开后,md文件是空的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

copy outerHTML、python爬取csdn文章、一键打包个人csdn文章保存到本地 的相关文章

随机推荐

  • mysql学习笔记--主从复制

    主从复制简介 首先需要两台机器 xff0c 并且主从复制的前提是需要先做数据同步 xff0c 先在我的master机器上用mysqldump 将所有的数据备份 xff0c 然后scp传输到我的slave机器上 xff0c 然后在slave机
  • mysql学习笔记---sql语句

    基本select查询 1 xff0c 设置系统变量 64 64 sql mode xff0c 有一些限制规则 xff0c 日期不能为0 xff0c 除数不能为0 xff0c 自增不能从0开始 xff0c 授权用户密码不能为空 64 64 s
  • minikube 学习笔记 -- deployment 详解

    minikube 是什么 minikube 可以理解为一个可以运行在本地的 xff0c 单节点的 Kubernetes xff0c 我们可以通过在里面创建 Pods 来创建对应的服务 kubernetes 是什么 Kubernetes 是容
  • minikube 学习笔记 -- service && HPA 详解

    按照下面的文档完成 service 实验 https www cnblogs com backups p k8s 1 html service Service 的作用 xff1a 提供服务的自动发现和负载均衡 因为 Pod 随时会被销毁和重
  • ROS :process has died

    项目场景 xff1a ROS编译报错 问题描述 xff1a 有的时候自己在ROS的框架下写代码会遇到如下的问题 xff1a 以前遇到这种问题基本上心里就觉得凉了 xff0c 因为这种编译之后的运行报错不好定位位置 xff0c 所以之前遇到这
  • PX4无人机-Gazebo仿真实现移动物体的跟踪

    原文链接PX4无人机 Gazebo仿真实现移动物体的跟踪末尾有演示视频 这个学期我们有一个智能机器人系统的课设 xff0c 我们组分配到的题目是 仿真环境下使用无人机及相机跟踪移动物体 xff0c 本文主要记录完成该课设的步骤以及内容 我们
  • nohup 和>/dev/null 2>&1

    一 用途 xff1a nohup表示永久运行 amp 表示后台运行 在应用Unix Linux时 xff0c 我们一般想让某个程序在后台运行 xff0c nohup start mysql sh amp 该命令的一般形式为 xff1a no
  • 【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库

    ROS学习笔记10 ROS中配置自定义Cpp头文件和导入自定义Python库 文章目录 ROS学习笔记10 ROS中配置自定义Cpp头文件和导入自定义Python库一 ROS中的头文件和源文件1 1 自定义头文件调用1 2 自定义源文件调用
  • 【ROS学习笔记13】ROS中的TF坐标变换

    ROS学习笔记13 ROS中的TF坐标变换 文章目录 ROS学习笔记13 ROS中的TF坐标变换前言1 静态坐标变换2 动态坐标变换3 多坐标变换4 坐标系关系查看5 TF坐标变换实操Reference 写在前面 xff0c 本系列笔记参考
  • Android---bitmap优化

    目录 Bitmap 占用内存大小计算 Bitmap Drawable InputStream Byte 之间进行转换 Bitmap 相关方法 BitmapFactory 工厂类 Bitmap 占用内存大小计算 Bitmap 作为位图 xff
  • Linux的基础命令

    一 切换用户 su 用户名 1 切换管理员用户root 需要输入登录时的密码password 密码不显示 2 切换回普通用户 不需要输入密码password 二 目录操作 1 切换目录 1 cd 切换到系统根目录 2 cd 切换到当前用户的
  • uC/OS_II操作系统移植,亲测可用

    uC OS II简介 uC OS II由Micrium公司提供 xff0c 是一个可移植 可固化的 可裁剪的 占先式多任务实时内核 xff0c 它适用于多种微处理器 xff0c 微控制器和数字处理芯片 xff08 已经移植到超过100种以上
  • 树莓派开机出现正确密码循环输入的问题

    树莓派开机出现正确密码无限循环输入的问题 问题状况 树莓派开机后在登录界面输入正确密码后 xff0c 屏幕闪了一下然后还要输入密码 无限循环该现象 问题出现背景 在上一次关机之前进行了Tomcat等环境变量的配置 问题原因 就是最近的一次操
  • 机器人技术(RoboCup 2D)如何进行一场球赛

    合工大RoboCup 2D主要函数注释 以及 机器人技术实验五十题代码已更新 博文连接如下 博文连接点这里 进行一场球赛 xff1a 畅所欲言 欢迎交流 1 启动服务器 打开终端 xff0c 输入rcssserver xff08 tab键自
  • React几种传递参数的方法

    1 父组件向子组件传参 回调函数也是参数的一种 xff0c 也可以传给子组件 xff0c 达到子组件控制父组件的目的 import React from 39 react 39 import ReactDOM from 39 react d
  • Git拉取项目,拉取git更新后的项目

    1 首次拉取git上的项目 这里以idea2020 1展示 1 首先在git上找到克隆链接 2 复制链接之后 回到idea 找到VCS gt Get from Version Control Clone就可以 2 拉取git更新后的项目 第
  • 如何轻松的完成属于自己的一架无人机(免费领取PCB)

    64 翼风室内有刷F1飞控教程 本篇博客的目的 为了让各位无人机爱好者轻松的制作一架属于自己的无人机 xff0c 本篇文章基于翼风室内有刷F1飞控板 xff0c 围绕接口介绍以及使用教程展开介绍 xff0c 希望大家喜欢 xff0c 废话不
  • linux下jps命令找不到的问题

    jps是用来查看进程的命令 搭建rocketmq时 xff0c 常常要用jps来查看名称服务是否已启动 xff0c 但是某些机器报错如下 xff1a bash jps command not found 解决办法如下 xff1a 一 检查基
  • 如何轻松的完成属于自己的一架无人机下篇——调参(免费领取PCB)

    如何轻松的完成属于自己的一架无人机下篇 调参 xff08 免费领取PCB xff09 64 翼风室内有刷F1飞控教程 xff08 QQ群 xff1a 708260375 xff09 本篇博客的目的 上篇主要针对需要的材料以及硬件教程进行了教
  • copy outerHTML、python爬取csdn文章、一键打包个人csdn文章保存到本地

    文章目录 1copy outerHTML复制网站源码法1 1复制源码1 2 遇到的问题 2 python爬取CSDN博客文章 xff08 保存为html xff0c txt xff0c md xff09 2 1 安装依赖2 2 完整代码 3