使用Python和Parsel库爬取CSDN博客文章专栏并生成Markdown链接列表的导航

引言

今天,我将分享如何使用Python的requestsparsel库来爬取CSDN博客的文章,并生成一个Markdown格式的链接列表导航页。
我在整理这个专栏Linux基础操作合集的文章合集时,发现想要给这个专栏的文章做个导航合集页很麻烦,虽然直接点进这个专栏就可以查看,不需要多此一举,但是我认为如果这个专栏文章非常多,那么整理出一个导航页的文章合集导航页就可以找到需要的文章而不用在专栏页里点击翻页一页一页的翻看了。
比如此时已经更新了26篇文章,
在这里插入图片描述
如果后面再添加很多篇,我的第一篇的目录信息又要修改
在这里插入图片描述
那么使用这个脚步就可以直接生成目录信息,复制粘贴到文章里即可。
在这里插入图片描述

环境准备

在开始之前,请确保你已经安装了Python环境以及以下库:

  • requests:用于发送HTTP请求。
  • parsel:用于解析HTML文档。

你可以通过以下命令安装这些库:

pip install requests parsel

代码解析

以下是爬取CSDN博客文章并生成Markdown链接列表的完整代码:

import requests
import parsel# 定义要爬取的目标网页
url = 'https://blog.csdn.net/qq_52313022/category_12812485.html'
# 设置请求头,模拟浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0'
}html_urls = []
all_urls = []
titles = []
all_titles = []# 循环遍历页面,爬取文章链接和标题
for page in range(1, 5):print(f'开始爬取第{page}页')# 根据页码生成链接if page == 1:link = urlelse:link = 'https://blog.csdn.net/qq_52313022/category_12812485_{}.html'.format(page)# time.sleep(1)# 发送 GET 请求获取网页内容response = requests.get(url=link, headers=headers)if response.status_code == 200:html = response.text# 使用 parsel 解析 HTML 内容url_selector = parsel.Selector(html)else:print('请求失败')break# 获取本页所有文章链接html_urls = url_selector.css('.column_article_list li a::attr(href)').getall()# 获取本页所有文章标题titles = url_selector.css(' div.column_article_title  h2::text').getall()titles = [title.strip() for title in titles]# 创建一个只保留非空标题的列表all_titles.extend(titles[i].replace(' ', '_') for i in range(len(titles)) if titles[i] != '')all_urls.extend(html_urls)print(f'第{page}页文章链接:{html_urls}')print(f'第{page}页文章标题:{titles}')print("所有文章链接:",all_urls)
print("所有文章标题:",all_titles)# 将 URL 和标题组合成 Markdown 超链接
markdown_links = []
for url, title in zip(all_urls, all_titles):markdown_links.append(f'[{title}]({url})')# 将超链接排序
markdown_links.sort()print("Markdown 超链接:",markdown_links)
# 写入 Markdown 文件
with open('output.md', 'w', encoding='utf-8') as f:for link in markdown_links:f.write(link + '\n')
print('============================================')
print("Markdown 超链接已成功写入 output.md 文件。")

代码说明

  1. 导入库:首先导入requestsparsel库。
  2. 设置目标URL和请求头:定义要爬取的CSDN博客页面,并设置请求头以模拟浏览器访问。
  3. 循环遍历页面:通过循环遍历指定的页面范围(这里是前4页)。
  4. 发送请求和解析HTML:对每个页面发送GET请求,并使用parsel解析HTML内容。
  5. 提取文章链接和标题:使用CSS选择器提取文章的链接和标题。
  6. 生成Markdown链接:将提取的链接和标题组合成Markdown格式的超链接。
  7. 写入文件:将生成的Markdown链接写入output.md文件。

结语

通过上述步骤,你可以轻松地爬取CSDN博客文章并生成Markdown链接列表。这不仅有助于信息整理,还可以作为学习Python网络爬虫的一个实用案例。希望这篇文章对你有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪个牌子的宠物空气净化器好?口碑好的宠物空气净化器推荐!

哪个牌子的宠物空气净化器好?作为一名家电测评博主,我发现市面上宠物空气净化器的牌子越来越多了,很多厂家都看中了宠物行业的红利,想来分一杯羹,这就导致很多技术不成熟的产品流入了市场。今年我测试了50多台宠物空气…

数据清理——确保数据质量的关键步骤

简介 在数据分析和机器学习中,数据清理是预处理过程中的重要一环。良好的数据清理能够提高数据的质量,从而提升模型的准确性和可靠性。本篇文章将深入探讨数据清理的几个关键知识点,包括缺失值处理、数据不一致问题和噪声处理。通过详细的概…

isp框架代码理解

一、整体框架如下: 1 外层的src中 1.1 从camera.c->task.c:封装了3层,透传到某个功能的本级。 1.2 core.c和capability.c中实现:开机初始化加载参数。2. plat/src中 2.1 fun.c中继task.c又透传了一层;以及最后功能…

状态机模型

文章目录 一、大盗阿福二、股票买卖 IV三、股票买卖 V四、设计密码4.1kmp题目4.2设计密码 一、大盗阿福 题目链接 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N 1e5 10; int f[N][2]; int main() {int…

MATLAB——矩阵操作

内容源于b站清风数学建模 数学建模清风老师《MATLAB教程新手入门篇》https://www.bilibili.com/video/BV1dN4y1Q7Kt/ 目录 1.MATLAB中的向量 1.1向量创建方法 1.2向量元素的引用 1.3向量元素修改和删除 2.MATLAB矩阵操作 2.1矩阵创建方法 2.2矩阵元素的引用 2.3矩阵…

一:Linux学习笔记(第一阶段)-- 安装软件 vmware workstation 虚拟机软件 centos系统

目录 学习计划&#xff1a; 资源准备 虚拟机软件&#xff1a;就别自己找了 现在换网站了 下载比较费劲 Centos8&#xff1a; 阿里云镜像地址下载&#xff08;下载比较版 但是有不同版本&#xff09;&#xff1a;centos安装包下载_开源镜像站-阿里云 百度网盘地址&#xff…

如何在Linux系统中使用Zabbix进行监控

如何在Linux系统中使用Zabbix进行监控 Zabbix简介 安装Zabbix 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 配置Zabbix数据库 创建数据库 导入数据库 配置Zabbix服务器 访问Zabbix Web界面 完成初始配置 配置Zabbix Agent 安装Agent 配置Agent 添加主机到Zabbix 创…

uniapp编译多端项目App、小程序,input框键盘输入后

项目场景&#xff1a; uniapp编译后的小程序端&#xff0c;app端 在一个输入框 输入消息后&#xff0c;点击键盘上的操作按钮之后键盘不被收起&#xff0c;点击其他发送按钮时&#xff0c;键盘也不被收起。 问题描述 在编译后的app上普通的事件绑定&#xff0c;tap,click在发…

代码随想录day15 二叉树(3)

文章目录 day11 栈与队列(2)栈与队列的总结 day13 二叉树&#xff08;1&#xff09;day14 二叉树&#xff08;2&#xff09;day15 二叉树&#xff08;3&#xff09; day11 栈与队列(2) 逆波兰表达式求值 https://leetcode.cn/problems/evaluate-reverse-polish-notation/ 逆…

【C#】搭建环境之CSharp+OpenCV

在我们使用C#编程中&#xff0c;对图片处理时会用到OpenCV库&#xff0c;以及其他视觉厂商提供的封装库&#xff0c;这里因为OpenCV是开源库&#xff0c;所以在VS资源里可以直接安装使用&#xff0c;这里简单说明一下搭建的步骤及实现效果&#xff0c;留存。 1. 项目创建 1.1…

环形运输距离Conveyor Belts

Conveyor Belts 题面翻译 传送带 题目描述 传送带 $ m_n $ 是一个大小为 $ n \times n $ 的矩阵&#xff0c;其中 $ n $ 是一个偶数。矩阵由顺时针移动的同心带组成。 换句话说&#xff0c;当 n 2 n2 n2 时&#xff0c;传送带矩阵就是一个 2 2 2 \times 2 22 的矩阵&a…

ffmpeg视频滤镜:添加边框-drawbox

滤镜介绍 drawbox 官网链接 > FFmpeg Filters Documentation 这个滤镜会给视频添加一个边框。 滤镜使用 参数 x <string> ..FV.....T. set horizontal position of the left box edge (default "0")y <string&…

CPU算法分析LiteAIServer视频智能分析平台噪声检测功能在视频监控中的应用与优势

在视频监控系统中&#xff0c;噪声问题一直是影响视频画面清晰度和可用性的关键因素。这些噪声可能源于多种因素&#xff0c;如低光环境、摄像机传感器的高灵敏度或编码压缩过程中的失真等。为了应对这些挑战&#xff0c;CPU算法分析LiteAIServer引入了噪声检测功能&#xff0c…

HTB:BoardLight[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are listening on BoardLight? 2.What is the domain name used by the box? 3.What is the name of the application running on a virtual host of board.htb? 4.What version of Dolibarr is running on Board…

mysql 5.7实现组内排序(连续xx天数)

需求&#xff1a;查询出连续登录的用户及其连续登录的天数 我先说一下思路&#xff1a;要实现连续登录的判断&#xff0c;可以找一下他们之间的规律。这里我拿一个用户来说&#xff0c;如果这个用户在1、2、3号都有登录记录&#xff0c;可以对这个用户的数据按照时间排序&…

★ Linux ★ 基础开发工具的使用(上)

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起学习 linux 基础开发工具的使用~ 目录 壹 Linux编辑器 - vim使用 1.1 vim的基本概念 1.2 vim正常模式命令集 1.2.1 插入模式 1.2.2 移动光标命令 1.2.3 编辑命令 1.3 vim末行模式命令集 贰 Lin…

solidworks学习6吊环-20241030

solidworks学习6吊环 图 1 使用到的命名&#xff1a;拉伸曲面&#xff0c;旋转曲面&#xff0c;镜像实体&#xff0c;剪裁曲面&#xff0c; 前视基准面绘制 图 2 绘制旋转轴 图 3 旋转曲面 图 4 上视基准面绘制&#xff0c;标准圆边尺寸的时候需要按住shift键标注&#x…

提示词高级阶段学习day4.1

第一步&#xff1a;你要有一个大模型帐号&#xff0c;至少已经熟悉和它们对话的方式。最强性能当属ChatGPT4&#xff0c;当然也推荐国产平替&#xff1a; Kimi.ai - 帮你看更大的世界 智谱清言 第二步&#xff1a;看 OpenAI 的官方文档&#xff1a; 目录&#xff1a;OpenAI …

开源趣味艺术画板Paint Board

什么是 Paint Board &#xff1f; Paint Board 是简洁易用的 Web 端创意画板。它集成了多种创意画笔和绘画功能&#xff0c;支持形状绘制、橡皮擦、自定义画板等操作&#xff0c;并可以将作品保存为图片。 软件功能&#xff1a; 不过非常可惜&#xff0c;老苏最期待的数据同步还…

建设NFS服务器并实现文件共享

关闭防火墙和s0 systemctl stop firewalld setenforce 0 安装NFS yum install nfs-utils -y 新建共享目录并设置权限 echo "hello" > /nfs/shared/test1 chmod -Rf 777 /nfs/shared/ 配置服务端的NFS配置文件 vim /etc/exports /nfs/shared *(ro) 启动…