1. 如何爬取自己的CSDN博客文章列表(获取列表)(博客列表)(手动+python代码方式)

文章目录

    • 写在最前
    • 步骤
      • 打开chrome浏览器,登录网页
      • 按pagedown一直往下刷呀刷呀刷,直到把自己所有的博文刷出来
      • 然后我们按F12,点击选取元素按钮
      • 然后随便点一篇博文,产生如下所示代码
      • 然后往上翻,找到头,复制
      • 然后到编辑器里粘贴,然后保存文件为export.html
      • 用vscode格式化
      • 撰写python代码parse.py
      • 将export.html恢复之前的格式
      • 执行解析代码
      • 查看articles.json文件
    • 本篇文章就告一段落了,如有兴趣,可以看我下一篇文章,我们基于本篇文章得到的结果,获取每篇CSDN博文质量分并按质量分由小到大排序

下一篇:2. 获取自己CSDN文章列表并按质量分由小到大排序(文章质量分、博文质量分)

写在最前

一开始我想弄个python代码,直接爬取https://blog.csdn.net/Dontla?type=blog页面的的所有已发布文章列表,但是貌似爬不到,也不知道是什么原因,可能是大佬做了限制,不让爬。。。

并非做了限制,可以看这篇博客:如何批量查询自己的CSDN博客质量分

我只能想其他办法了,,,

后来想到一个办法,既然不让爬,就自己手工拷贝吧,这还是能做到的。

步骤

打开chrome浏览器,登录网页

https://blog.csdn.net/Dontla?type=blog

在这里插入图片描述

按pagedown一直往下刷呀刷呀刷,直到把自己所有的博文刷出来

在这里插入图片描述

刷完老费劲了

然后我们按F12,点击选取元素按钮

在这里插入图片描述

然后随便点一篇博文,产生如下所示代码

这里每一个article开头的都我们刚刚刷出来的一篇博文:

在这里插入图片描述

然后往上翻,找到头,复制

找到这个div data...>的头,然后点击右键,选择复制复制–>复制outerHTML:

在这里插入图片描述

然后到编辑器里粘贴,然后保存文件为export.html

在这里插入图片描述

用vscode格式化

格式化之后,就很清晰了,每个article标签就是我们的一篇博文,我们就是要对每个article标签内的内容实行抓取:

在这里插入图片描述

撰写python代码parse.py

求助最强大脑:

我有一个export.html文件,里面有很多个article标签,每个标签内容大致如下:

  <article data-v-6fe2b6a7="" data-v-bb5f5e3e="" class="blog-list-box"><a data-v-6fe2b6a7=""href="https://dontla.blog.csdn.net/article/details/132237839" target="_blank"data-report-click="{&quot;spm&quot;:&quot;3001.5502&quot;}" data-report-query="spm=3001.5502"><div data-v-6fe2b6a7="" class="blog-img-box"><img data-v-6fe2b6a7=""src="https://img-blog.csdnimg.cn/3b61264764cb43f8ad91b6b5b7e4e65e.png" alt="" class="course-img"></div><div data-v-6fe2b6a7="" class="list-box-cont"><div data-v-6fe2b6a7=""><div data-v-6fe2b6a7="" class="blog-list-box-top"><h4 data-v-6fe2b6a7="">python虚拟环境venv安装报错:error: invalid command ‘bdist_wheel‘(需要在虚拟环境中安装wheel包,pip installwheel)</h4></div><div data-v-6fe2b6a7="" class="blog-list-content">是一个Python的打包工具,用于构建和安装Python软件包。包,然后再安装之前安装报错的包。在虚拟环境中运行以下命令安装。这个错误通常是由于缺少。</div></div><div data-v-6fe2b6a7="" class="blog-list-footer"><div data-v-6fe2b6a7="" class="blog-list-footer-left"><div data-v-6fe2b6a7="" class="article-type article-type-yc">原创</div> <!----> <!----> <!----><div data-v-6fe2b6a7="" class="view-time-box">发布博客&nbsp;2 小时前&nbsp;·</div><div data-v-6fe2b6a7="" class="view-num-box"><span data-v-6fe2b6a7="" class="view-num">6<spandata-v-6fe2b6a7="" class="two-px">&nbsp;阅读&nbsp;·</span></span></div><div data-v-6fe2b6a7="" class="give-like-box"><span data-v-6fe2b6a7="" class="give-like-num">0<spandata-v-6fe2b6a7="" class="two-px">&nbsp;点赞&nbsp;·</span></span></div><div data-v-6fe2b6a7="" class="comment-box"><span data-v-6fe2b6a7="" class="comment-num">0<spandata-v-6fe2b6a7="" class="two-px">&nbsp;评论&nbsp;·</span></span></div><div data-v-6fe2b6a7="" class="comment-box"><span data-v-6fe2b6a7="" class="comment-num">0<spandata-v-6fe2b6a7="" class="two-px">&nbsp;收藏</span></span></div></div> <!----></div></div></a></article>

我需要你用python帮我遍历这个文件,然后将每个article中的内容提取出来,做成一个json文件,每个文章提取为一个数组元素,数组元素中要有以下字段:article_url字段(class="blog-list-box"后面那个)、article_title字段(class="blog-list-box-top"后面那个)、article_type(class="article-type article-type-yc"后面那个)

根据最强大脑给出的结果,我再删删改改,得出了这样一个代码:

(parseHtml.py)

from bs4 import BeautifulSoup
import json# 读取HTML文件
with open('export.html', 'r', encoding='utf-8') as f:html = f.read()# 创建BeautifulSoup对象
soup = BeautifulSoup(html, 'html.parser')# 遍历article标签
articles = []
for article in soup.find_all('article'):# 提取字段内容article_url = article.find('a')['href']article_title = article.find('h4').textarticle_type = article.find(class_='article-type').text.strip()article_time = article.find(class_='view-time-box').text.strip().replace('发布博客', '').replace('·', '').strip()# 构造字典article_dict = {'article_url': article_url,'article_title': article_title,'article_type': article_type,'article_time': article_time}# 添加到数组articles.append(article_dict)# 生成json文件
with open('articles.json', 'w', encoding='utf-8') as f:json.dump(articles, f, ensure_ascii=False, indent=4)

代码解释:使用BeautifulSoup库来解析HTML文件,并使用json库来生成json文件。

将export.html恢复之前的格式

执行前我们先恢复原始格式,因为我的vscode格式化之后,貌似加入了很多无关的\n以及空格,搞到后面解析结果不好了:

在这里插入图片描述

我们把export.html文本恢复成这样:

在这里插入图片描述

执行解析代码

在这里插入图片描述

执行python代码:

python3 parse.py

在这里插入图片描述
在这里插入图片描述

生成了articles.json文件。

查看articles.json文件

可以说结果非常的完美:

在这里插入图片描述

[
{
“article_url”: “https://dontla.blog.csdn.net/article/details/132237839”,
“article_title”: “python虚拟环境venv安装报错:error: invalid command ‘bdist_wheel‘(需要在虚拟环境中安装wheel包,pip install wheel)”,
“article_type”: “原创”
},
{
“article_url”: “https://dontla.blog.csdn.net/article/details/132212623”,
“article_title”: “Docker可视化容器监控工具portainer.io(docker监控docker)(Docker Standalone、Docker Swarm、Kubernetes、ACI、Nomad)监控容器”,
“article_type”: “原创”
},
{
“article_url”: “https://dontla.blog.csdn.net/article/details/132216588”,
“article_title”: “FQDN是什么?全限定域名(Fully Qualified Domain Name)(主机名、次级域名、顶级域名)”,
“article_type”: “转载”
},
{
“article_url”: “https://dontla.blog.csdn.net/article/details/132178650”,
“article_title”: “ubuntu python虚拟环境venv搭配systemd服务实战”,
“article_type”: “原创”
}
]

本篇文章就告一段落了,如有兴趣,可以看我下一篇文章,我们基于本篇文章得到的结果,获取每篇CSDN博文质量分并按质量分由小到大排序

下一篇:2. 获取自己CSDN文章列表并按质量分由小到大排序(文章质量分、博文质量分)

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

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

相关文章

Java-类型和变量(基于C语言的补充)

一个简单的Java程序 args){ System.out.println("Hello,world"); } }通过上述代码&#xff0c;我们可以看到一个完整的Java程序的结构&#xff0c;Java程序的结构由如下三个部分组成&#xff1a; 1.源文件&#xff08;扩展名为*.java)&#xff1a;源文件带有类的定义…

[保研/考研机试] KY7 质因数的个数 清华大学复试上机题 C++实现

描述 求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如1202*2*2*3*5&#xff0c;共有5个质因数。 输入描述&#xff1a; 可能有多组测试数据&#xff0c;每组测试数据的输入是一个正整数N&#xff0c;(1<N<10^9)。 输出描述&#xff1a; 对于每组数…

leetcode 6914. 翻倍以链表形式表示的数字

给你一个 非空 链表的头节点 head &#xff0c;表示一个不含前导零的非负数整数。 将链表 翻倍 后&#xff0c;返回头节点 head 。 示例 1&#xff1a; 输入&#xff1a;head [1,8,9] 输出&#xff1a;[3,7,8] 解释&#xff1a;上图中给出的链表&#xff0c;表示数字 189 。返…

Photoshop快捷键大全

Photoshop是一款非常强大的图像处理软件&#xff0c;它提供了许多快捷键&#xff0c;可以帮助用户更快地完成操作。熟练掌握这些快捷键&#xff0c;可以大大提高工作效率&#xff0c;让您更加专注于创作。 Photoshop快捷键汇总&#xff1a; 一、基本操作快捷键 1. 新建文档…

什么是CSS中的渐变(gradient)?如何使用CSS创建线性渐变和径向渐变?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 渐变&#xff08;Gradient&#xff09;在CSS中的应用⭐ 线性渐变&#xff08;Linear Gradient&#xff09;语法&#xff1a;示例&#xff1a; ⭐ 径向渐变&#xff08;Radial Gradient&#xff09;语法&#xff1a;示例&#xff1a; ⭐ 写…

第06天 静态代理和动态代理

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

【ARM Cache 系列文章 9 番外篇 -- ARMv9 系列 Core 介绍】

文章目录 ARMv9 系列CoreARM Cortex-A510 介绍ARM Cortex-A715ARM Cortex-A720 ARMv9 系列Core 2021年5月Arm公布了其最新3款CPU和3款GPU核心设计&#xff0c;三款新CPU分别是旗舰核心Cortex-X2、高性能核心Cortex-A710、高能效核心Cortex-A510 CPU&#xff0c;三款新GPU核心则…

【Unity每日一记】向量操作摄像机的移动(向量加减)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

TCP消息传输可靠性保证

TCP链接与断开 -- 三次握手&四次挥手 三次握手 TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中&#xff0c;这一…

面试热题(合并K个升序链表)

给定一个链表数组&#xff0c;每个链表都已经按升序排列。 请将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&#xff1a;[1,1,2,3,4,4,5,6] 解释&#xff1a;链表数组如下&#xff1a; [1->4->5,1…

【软件工程】面向对象方法-RUP

RUP&#xff08;Rational Unified Process&#xff0c;统一软件开发过程&#xff09;。 RUP特点 以用况驱动的&#xff0c;以体系结构为中心的&#xff0c;迭代增量式开发 用况驱动 用况是能够向用户提供有价值结果的系统中的一种功能用况获取的是功能需求 在系统的生存周期中…

uni-app日期选择器

写个简单的日期选择器&#xff0c;还没搞样式&#xff0c;所以有点丑 大概长这样吧 首先是这个picker选择器&#xff0c;mode选择日期&#xff0c;end是写一个范围前日期&#xff0c;:end就是这个日期是动态变化的&#xff0c;还有change函数 <template><view>&l…

【pinia】Pinia入门和基本使用:

文章目录 一、 什么是pinia二、 创建空Vue项目并安装Pinia1. 创建空Vue项目2. 安装Pinia并注册 三、 实现counter四、 实现getters五、 异步action六、 storeToRefs保持响应式解构七、基本使用&#xff1a;【1】main.js【2】store》index.js【3】member.ts 一、 什么是pinia P…

安达发APS|生产计划排产软件助力加工制造业智能化转型

随着全球经济一体化的不断深入&#xff0c;市场竞争日益激烈&#xff0c;加工制造企业面临着巨大的生存压力。在这种情况下&#xff0c;企业对于生产计划的精细化管理需求日益迫切。为了适应这一市场需求&#xff0c;安达发推出了专门针对加工企业的APS生产计划排产软件&#x…

新一代构建工具 maven-mvnd

新一代构建工具 maven-mvnd mvnd的前世今生下载安装 mvndIDEA集成 mvnd的前世今生 maven 作为一代经典的构建工具&#xff0c;流行了很多年&#xff0c;知道现在依然是大部分Java项目的构建工具的首选&#xff1b;但随着项目复杂度提高&#xff0c;代码量及依赖库的增多使得ma…

简单易懂的 Postman Runner 参数自增教程

目录 什么是 Postman Runner&#xff1f; Postman Runner 如何实现参数自增&#xff1f; 步骤一&#xff1a;设置全局参数 步骤二&#xff1a;将全局参数带入请求参数 步骤三&#xff1a;实现参数自增 资料获取方法 什么是 Postman Runner&#xff1f; Postman Runner 是…

Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式

selenium中有8种不错的元素定位方式&#xff0c;每个方式和应用场景都不一样&#xff0c;需要根据自己的使用情况来进行修改 8种find_element元素定位方式 1.id定位2.CSS定位3.XPATH定位4.name定位5.class_name定位6.Link_Text定位7.PARTIAL_LINK_TEXT定位8.TAG_NAME定位总结 …

【第一阶段】kotlin中反引号中的函数名特点

在kotlin中可以直接中文定义函数&#xff0c;使用反引号进行调用 eg: fun main() {2023年8月9日定义的函数(5) }private fun 2023年8月9日定义的函数(num:Int){println("反引号的用法$num") }执行结果 在Java中is,in可以定义方法&#xff0c;但是在kotlin中is,in是…

资料分析(三)—— 基期、现期、人口、增长量

基期 基期值 现期值 - 增长量 增长量/增长率 现期值/1&#xff08;间隔)增长率 化除为乘 &#xff1a;当增长率&#xff5c;r| < 5% 时&#xff0c;&#xff0c; 注&#xff1a;当选项首位相同&#xff0c;第二位也相同时&#xff0c;只能用直除 基期和差 (结合选…

【openwrt学习笔记】dnsmasq源码阅读

目录 一、DHCP(Dynamic Host Configuration Protocol)1.1 前置知识1.2 参考链接1.3 IP地址分配代码分析rfc2131.cdhcp-common.cdhcp.c 1.4 几个小问题1.4.1 连续IP模式&#xff08;sequential_ip&#xff09;1.4.2 重新连接使用IP地址1.4.3 续约租期1.4.4 不同的MAC地址分配到相…