【python爬虫应用03】csdn个人所有文章质量分查询

🛠️ 环境准备

在开始编写代码之前,我们需要进行一些环境准备。以下是所需的环境和库:

  • 操作系统:Windows
  • 编程语言:Python 3
  • 编辑器:VSCode(可选)

安装所需的库:

  • requests:用于发送HTTP请求
  • MultipartEncoder:用于构造POST请求的请求体

可以使用以下命令在命令行中安装这些库:

pip install requests
pip install requests_toolbelt

请确保已经正确安装了Python 3,并且在编写代码之前设置了Python 3的环境变量。

🎯 分析目标数据

在进行爬取之前,首先需要打开目标网页并使用浏览器的开发者工具,以获取所需的请求 URL 和请求标头。

第一步:打开目标网页

在这里插入图片描述

第二步:使用开发者工具

按下键盘上的F12键,打开浏览器的开发者工具。然后点击"Network"选项卡,这将显示浏览器发送的网络请求。

在这里插入图片描述

第三步:获取请求 URL 和请求标头

在开发者工具中,可以看到所有的网络请求。找到目标请求,并点击查看其详情。

在请求详情中,我们可以找到标头,查看请求的URL和请求标头。这些信息将在后续的代码编写中使用。

请求url

点击负载找到请求参数

参数列表

第四步:分析请求url,构造参数字典

根据以上信息可以得到,请求url是由两部分构成,

url = "https://blog.csdn.net/community/home-api/v1/get-business-list"
参数:
page: 2
size: 20
businessType: lately
noMore: false
username: mingfeng4923

🐍 获取所有文章代码编写

⭐️ 获取单页的文章列表

✅首先,需要导入所需的库:

import requests
from requests_toolbelt import MultipartEncoder

✅接下来,将发送GET请求并获取数据内容:

url = 'urls = "https://blog.csdn.net/community/home-api/v1/get-business-list"'
# 使用了常见的浏览器User-Agent来模拟浏览器请求
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"}lb_params = {"page": 1,"size": "20","businessType": "blog","orderby": "","noMore": "false","year": "","month": "","username": "mingfeng4923",}res = requests.get(url=urls, headers=headers, params=lb_params)

✅使用json方法处理数据,并读取文章列表信息,文章信息在data>list下

在这里插入图片描述

data_list = res.json()["data"]["list"]

✅遍历列表输出文章链接和文章标题

for data in data_list:print(data["url"],data["title"])

✅结果:
在这里插入图片描述

⭐️ 获取所有页的文章

修改页码,循环发送GET请求获取文章列表信息,直到返回的列表为空停止循环。

要获取所有文章信息,我们需要对请求的URL进行修改。URL中的参数page代表当前页码,我们可以通过修改该参数的值来获取不同页的文章列表。

🫸 首先,我们定义一个函数get_post_list_urls,该函数用于发送GET请求获取文章列表信息。

def get_post_list_urls(page, username):# 构造请求URL和请求参数url = "https://blog.csdn.net/community/home-api/v1/get-business-list"params = {"page": page,"size": "20","businessType": "blog","orderby": "","noMore": "false","year": "","month": "","username": username,}headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"}try:# 发送GET请求response = requests.get(url=url, headers=headers, params=params)# 解析响应数据data_list = response.json()["data"]["list"]return data_listexcept Exception as e:print(f"获取文章列表失败:{e}")return []

🫸 然后,我们可以使用该函数来获取所有文章的信息。

res = []  # 存储所有文章信息的列表
page = 1  # 初始页码# 循环获取文章列表信息
while True:data_list = get_post_list_urls(page, UserName)page += 1if data_list:res.extend(data_list)else:break

输出查看一下结果

# 遍历输出文章链接和标题
COUNT = len(res)
for data in res:print(data["url"],data["title"])
print(f"[+] [{COUNT}篇]")

在这里插入图片描述

📑 CSDN质量分查询

接下来是对博文质量分数的查询。首先打开目标网页并使用浏览器的开发者工具。然后复制粘贴要查询的文章链接,点击查询按钮。在开发者工具中查看请求的请求 URL 和请求标头,注意这次要用POST方法进行请求。构造查询函数,使用requests库发送POST请求获取博文的质量分数。

要查询博文的质量分数,我们需要先打开目标网页并使用浏览器的开发者工具,以查看请求的URL和请求标头。

第一步:打开目标网页

在浏览器中打开目标网页。

目标链接:https://www.csdn.net/qc
在这里插入图片描述

第二步:使用开发者工具

按下键盘上的F12键,打开浏览器的开发者工具。然后复制要查询的文章链接,点击查询。

在这里插入图片描述

在开发者工具中就可以查询到文章的信息。

在这里插入图片描述

第三步:获取请求 URL 和请求标头

在开发者工具中,可以看到所有的网络请求。找到目标请求,并点击查看其详情。

在请求详情中,我们可以找到标头,查看请求的URL和请求标头。这些信息将在后续的代码编写中使用。

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

根据以上信息可以得到,请求url和参数信息,使用的是post方法

请求url : https://bizapi.csdn.net/trends/api/v1/get-article-score
参数:url: https://blog.csdn.net/mingfeng4923/article/details/131423637

第四步:构造查询函数

在Python中,我们可以定义一个函数get_quality_score,用于发送POST请求获取博文的质量分数。

def get_quality_score(article_url):# 构造请求URL和请求体url = "https://bizapi.csdn.net/trends/api/v1/get-article-score"params = {"url":article_url}headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0","Content-Type": "application/json",}try:# 发送POST请求response = requests.post(url=url, headers=headers,  params=params, timeout=10,)# 解析响应数据score = response.json()["data"]["score"]return scoreexcept Exception as e:print(f"获取质量分数失败:{e}")return None

报错401解决方法

这样直接访问就会出错,status_code 结果是401

在这里插入图片描述

这里需要使用requests_toolbelt库中的MultipartEncoder方法:

from requests_toolbelt import MultipartEncoder
...
params = MultipartEncoder({"url": article_url})
headers['Content-Type'] = params.content_type # 修改Content-Type
res = requests.post(url,headers=headers,data=params,  # 使用datatimeout=10,)

在这里插入图片描述

status_code返回200,正常访问

返回数据:

code: 200
data: {article_id: "131423637"message: "文章质量良好"nickname: "mingfeng4923"post_time: "2023-06-27 19:15:12"score: 92title: "Python爬虫:Scrapy框架"username: "mingfeng4923"}
message: "success"

在这里插入图片描述

第五步:循环查询质量分

在这里插入图片描述

🌖完整代码

整合以上步骤,使用Python编写完整代码。首先获取文章列表链接,然后遍历列表获取每篇文章的质量分数。输出文章链接和质量分数。

# CSDN个人博文质量查询
import requests
from requests_toolbelt import MultipartEncoderUserName = "mingfeng4923"
# 获取文章列表
def get_post_list_urls(page, username):headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"}lb_params = {"page": page,"size": "20","businessType": "blog","orderby": "","noMore": "false","year": "","month": "","username": username,}urls = "https://blog.csdn.net/community/home-api/v1/get-business-list"try:res = requests.get(url=urls, headers=headers, params=lb_params)# print(res.status_code)data_list = res.json()["data"]["list"]return data_listexcept Exception as e:print(f"[+] [ending] [{e}]")return 0# 查询质量分数
def get_sorce(article_url):url = "https://bizapi.csdn.net/trends/api/v1/get-article-score"headers = {# headers }params = MultipartEncoder({"url": article_url})headers["Content-Type"] = params.content_typetry:res = requests.post(url,headers=headers,data=params,timeout=10,)# print(f"[+] [{article_url}] [{res.status_code}] ")sorce = res.json()["data"]["score"]# print(sorce)return sorceexcept Exception as e:print(f"[+] [分数获取失败] [{article_url}] [{res.status_code}] [{e}]")return 0UserName = 'mingfeng4923'
res = []
page = 1
while True:data_list = get_post_list_urls(page, UserName)page += 1if data_list == 0 or len(data_list) == 0:breakelse:res += data_list
for data in res:article_url = data["url"]print(article_url,get_sorce(article_url))

通过以上代码,我们可以获取指定CSDN用户的所有文章链接,并查询每篇文章的质量分数。这对于分析文章的质量和影响力非常有用。你可以根据自己的需求对代码进行进一步的修改和扩展。

Happy coding!🎉

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

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

相关文章

php宝塔搭建EMLOG站长工具箱网站自适应PC手机端php源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套站长工具箱网站自适应PC手机端php源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP5.6 nginx mysql5.6 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码,宝塔添…

Spring Cloud

一、微服务架构 单体架构:将业务的所有功能集中在一个项 目中开发,打成一个包部署 分布式架构:根据业务功能对系统做拆分, 每个业务功能模块作为独立项目 开发,称为一个服务 微服务架构: 特征: …

CSS样式表

CSS样式表 1、CSS介绍 CSS Cascading Style Sheet 层叠样式表,或,级联样式表 表现HTML文件样式的计算机语言 修饰静态页面 配置脚本语言动态对网页元素进行样式格式化 排序 对元素的位置进行像素级精确控制 支持所有字体字号样式 对网页对象和模型样式…

springboot集成camunda

1、相关软件下载Camunda流程引擎快速入门——Hello World示例 2、由于camunda-modeler最新版本为5.12.0.界面不太一样。 可以安装历史版本4.12.0camunda-bpm camunda-modeler等历史版本下载 3、汉化Camunda Modeler汉化添加简体中文和繁体中文支持 4、集成如何实现Springbootca…

LVS负载均衡集群

目录 1.LVS 2.集群分类 3.负载均衡集群工作模式 4.负载均衡集群架构 5.LVS作用 6.LVS与nginx比较 7.ipvsadm工具 8.实验 第一台服务器 进入第二台第三台服务器下载http服务nfs服务rpcbind服务并启动 进入第四台服务器 9.总结 1.LVS 负载均衡的结构 2.集群分类 负载均衡…

Java基础---String str=new String(“tang“)创建了几个对象

目录 典型回答 常量池基本概念 字符串常量池的结构 再看字面量和运行时常量池 intern 还是创建了几个对象 intern的正确用法 典型回答 创建的对象数应该是1个或者2个如果常量池中存在,则直接new一个对象如果常量池不存在,则在常量池中创建一个对象…

MySQL数据库——MHA高可用

MySQL数据库——MHA高可用 一、MHA概述1.什么是 MHA2.MHA 的组成3.MHA 的特点 二、搭建 MySQL MHA1.Master、Slave1、Slave2 节点上安装 mysql5.72.修改 Master、Slave1、Slave2 节点的主机名,添加主从mysql的映射关系…

select……for update 到底加的什么锁

先上结论 主键索引唯一索引普通索引普通字段等值查询行锁行锁行锁间隙锁,锁表范围查询间隙锁,锁范围行间隙锁,锁范围行间隙锁,锁范围行间隙锁,锁表 数据表准备 DROP TABLE IF EXISTS t_user_test; CREATE TABLE t_u…

七牛云下载文件(显示在浏览器上)

最近在做关于如何将七牛云的文件下载下来,且在浏览器页面展示下载文件。 首先,我们需要注册七牛云账号 七牛云官网。 选择个人账户即可,若是需要企业账户,则可以选择企业账户。 注册成功绑定邮箱后,我们可以创建存储…

Linux——统信UOS(v20-1060a)部署.net core项目

部署.net core之前,请先确定已经安装了运行环境 Linux安装.net core环境 新建一个用于测试的 .net core web 项目 直接发布到文件夹,目标运行时选择 linux-64,这里根据你自己的操作系统的运行环境选择。 先点击完成,后面再设置参…

2023年Web安全学习路线总结!430页Web安全学习笔记(附PDF)

关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线、web安全攻防笔记、渗透测试路线图 网络安全的范畴很大,相较于二进制安全等方向的高门槛、高要求,Web安全体系比较成熟,在现阶段来看,但凡有自己…

【全文搜索选型】全文搜索 PostgreSQL 或 ElasticSearch

在本文中,我记录了在 PostgreSQL(使用 Django ORM)和 ElasticSearch 中实现全文搜索 (FTS) 时的一些发现。 作为一名 Django 开发人员,我开始寻找可用的选项来在大约一百万行的标准大小上执行全文搜索。有两个值得尝试的选项&…