当前位置: 首页 > news >正文

[ Python 原理分析 ]如何实现用户实现博客文章点赞-物联网Python

目录

一、前言

二、Python爬虫

三、详细操作

3.1 建立基本工程

3.2 获取文章列表

3.2.1 找到获取文章请求

3.2.2 分析获取请求

3.2.3 构建获取请求

3.2.4 调试打印

3.3 实现点赞操作

3.3.1 判断点赞状态

3.3.2 找到点赞请求

3.2.3 分析点赞请求

3.2.4 构建点赞请求

3.4 实现批量点赞

四、效果展示

五、声明


一、前言

        声明:本文仅对原理进行分析,本文中不涉及真实可以使用的代码。

        当然,本文主要介绍爬虫技术为主,作为一个物联网领域博主,Python技术必不可少,爬虫本质上无非是模拟用户向服务器发出各类请求,最终获取到想要的数据而已。那么这种技术,在物联网领域中也十分常见。

        在日常学习中,看到某些博主的文章写的真是出类拔萃下笔成章信手拈来酣畅淋漓,相比博主本人也是才高八斗学富五车(没错是我),恨不得马上将其所有文章全部读之,并全部一键三连

        进入主页才发现,好家伙,文章一百有余,如此岂不累煞我也!!!没想到该博主留下一本武林秘籍,名曰[ Python ]使用cookies模拟用户实现博客文章批量点赞-物联网Python-爬虫实战,正合我意,随废寝忘食,努力学习,终于养成爬虫一条,对该博主的所有文章全部投去了赞许的目光

二、Python爬虫

        Python爬虫,又称为网络爬虫或网页蜘蛛,是一种使用Python编程语言编写的自动化脚本或程序,用于浏览并抓取网页上的信息。这些爬虫程序能够模拟人类用户在浏览器中的行为,如发送HTTP请求、接收响应、解析HTML或JSON等格式的网页内容,并提取出所需的数据。

        那么爬虫常见的步骤是:

        确定目标 -> 发起请求 -> 获取响应 -> 解析内容 -> 存储数据

三、详细操作

        那么本文将以CSDN为例,实现对CSDN博客文章点赞的操作。

        环境使用:PyCharm 类库使用:requests、time

3.1 建立基本工程

        使用PyCharm建立工程,随后导入库文件。

import time
import requests

3.2 获取文章列表

        那么,我们如果要实现点赞功能,我们需要什么?当然是先要知道这个博主有多少文章?分别是什么?所以第一步我们需要获取文章列表。

3.2.1 找到获取文章请求

        那么,我们使用浏览器进入我的博客主页。西西菜鸟的家~

        随后,我们按下F12,选择网络或者NetWork,然后点击图片中第三步清空,随后将左侧页面的选中的“最近”切换为“文章”,看到右侧有数据出现即可。

3.2.2 分析获取请求

        经过我们对数据包的分析,我们可以发现有一条Get请求中返回了文章列表。

        看一下他的标头和负载:

        负载中的size字段代表获取的文章数量,我在后面的构造中,将此参数改为了200。

        那么通过上述信息,我们可以直接封装相关参数了。

3.2.3 构建获取请求

        那么首先,我们先定义这些参数,便于后续使用。(下列参数的获取在下个标题)

        随后,我们自定义一个函数,用来获取文章列表,并在主函数中调用它:

3.2.4 调试打印

        运行一下,看看能否获取到文章和articleID,这是点赞需要用的。

        可以看到,获取到了所有文章。

3.3 实现点赞操作

3.3.1 判断点赞状态

        常规来说,如果我们需要点赞,那么一定是先判断点赞状态的。

        根据上图,我们对具体json响应的分析,其携带了每篇文章的URL,我们知道我们进入博客会显示我们是否点过赞,因此实际上是我们是和服务器交互过点赞的数据的。

        那么我们访问该博客,使用F12进行抓包,搜索like关键字。

        经过试验,我们发现某个响应中的isLikeStatus变量与点赞状态有关,于是我们分析该请求的相关内容,并使用Python仿写发送该请求。

        并且由于该响应返回的不少json文本,而是网页,于是我们将其变为字符串,转换思路,去查找该字符串存在与否。

3.3.2 找到点赞请求

        依旧是原来的步骤,我们清空F12内的数据后,手动点击点赞按钮。

        不难看出,点赞功能是向服务器发出了一个like请求,返回的值中包含总点赞数量,点赞状态。

3.2.3 分析点赞请求

        查看标头和负载,我们分析并找出需要的信息。

3.2.4 构建点赞请求

        有了上述信息,我们构建点赞请求即可。

def like_article(articleId):url = "https://blog.csdn.net/......"  # 点赞链接headers = {'User-Agent': ...,'Cookie': ...}data = {"articleId": articleId}try:response = requests.post(url, headers=headers, data=data)解析...except requests.exceptions.HTTPError as e:print(f"ERROR={response.json()}")

        值得注意的是,我们的点赞是有上线的,那么我们就可以先判断是否达到上线,再去解析Json内容,当然,此处的写法并不官方,仅作测试即可。

3.4 实现批量点赞

        至此,我们将获取点赞状态的函数和实现点赞的函数组合起来,在程序遍历文章时,让程序对每个文章都进行点赞状态的判断。

四、效果展示

五、声明

        根据CSDN社区管理规定,因此本文并不提供源代码和相关任何可以使用的程序,本文仅涉及原理,供学习交流。

相关文章:

[ Python 原理分析 ]如何实现用户实现博客文章点赞-物联网Python

目录 一、前言 二、Python爬虫 三、详细操作 3.1 建立基本工程 3.2 获取文章列表 3.2.1 找到获取文章请求 3.2.2 分析获取请求 3.2.3 构建获取请求 3.2.4 调试打印 3.3 实现点赞操作 3.3.1 判断点赞状态 3.3.2 找到点赞请求 3.2.3 分析点赞请求 3.2.4 构建点赞请…...

【47 Pandas+Pyecharts | 杭州二手房数据分析可视化】

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 过滤数据2.3 行政区处理2.4 地址处理2.5 房屋信息处理2.6 面积处理2.7 楼层处理2.8 年份处理2.9 房价处理2.10 删除不用的列2.11 数据类型转换2.12 查看…...

C++入门基础知识13

C 的关键字(接上一篇博文)!! 10. const_cast用法: 该运算符用来修改类型的 const 或 volatile 属性。除了 const 或 volatile 修饰之外, type_id 和 expression 的类型是一样的。常量指针被转化成非常量指针…...

IP地址证如何实现HTTPS访问?(内网IP、公网IP)

IP地址证书(全称为IP地址的SSL/TLS证书)是实现通过IP地址进行HTTPS访问的关键。以下是实现这一目标的详细步骤: 一、选择证书颁发机构(CA) 1.选择支持IP证书的CA:并非所有证书颁发机构都提供为IP地址颁…...

东土科技车规级网络芯片获批量应用

东土科技孵化的我国第一颗国产汽车芯片名录的车规级TSN交换网络芯片,于近期获得国家新能源汽车技术创新中心10万片芯片订单,将规模化应用于车载网关,赋能新一代自主可控汽车网络通信架构。 车规级TSN交换网络芯片于2021年流片成功&#xff0…...

nvidia系列教程-AGX-Orin pcie扩展M.2磁盘调试笔记

目录 前言 一、AGX-Orin pcie接口介绍 二、原理图连接 三、SDK配置 四、M.2磁盘调试 总结 前言 NVIDIA Jetson AGX Orin 是一款强大的嵌入式平台,广泛应用于 AI 推理、机器人和自动驾驶等领域。在扩展存储方面,PCIe 接口的 M.2 SSD 是一个常见的选择。本篇博客将记录如何…...

haproxy七层代理知识点以及各种配置

1.为什么用haproxy 当后端主机有一个出现问题了的时候,我们需要访问的流量全部打到正常工作的后端主机,所以我们需要后端检测,lvs没有后端检测,所以就需要用到haproxy 2.负载均衡 2.1 什么是负载均衡 负载均衡,Loa…...

uniapp自定义浮动图标、列表布局

uniapp自定义浮动图标 <button class="fab" @click="goPage"><image src="../../../static/yiyuan.png" mode="" style="width: 60rpx;height:60rpx;"></image></button>.fab {z-index: 100;positi…...

学习嵌入式入门(十)高级定时器简介及实验(下)

一、高级定时器互补输出带死区控制实验 上图中&#xff0c;CH1 输出黄色的 PWM&#xff0c;它的互补通道 CH1N 输出绿色的 PWM。通过对比&#xff0c;可以 知道这两个 PWM 刚好是反过来的&#xff0c;CH1 的 PWM 为高电平期间&#xff0c;CH1N 的 PWM 则是低电平&#xff0c; 反…...

使用python在不改变原有excel的格式下,修改指定单元格格式

需求 有一个账单&#xff0c;需要生成一个副本&#xff0c;但是需要将交易员列隐藏&#xff0c;不能改变原有的格式 xlsx的文件容易实现&#xff0c;使用openpyxl实现 xls的文件使用xlrdxlutil实现 参考了https://segmentfault.com/q/1010000008270267 class GenCopyReport(o…...

MySQL数据库:详细安装与配置指南

目录 背景: 一.下载过程(MySQL数据库): 二.安装过程(MySQL数据库)&#xff1a; 三.验证MySQL是否安装成功 背景: MySQL 是一个流行的开源关系数据库管理(RDBMS)&#xff0c;由瑞典MySQL AB公司开发&#xff0c;后俩该公司被Sun Microsystems收购&#xff0c;Sun Microsyste…...

python爬虫代理IP实战

Python爬虫代理IP实战指南 在进行网络爬虫时&#xff0c;使用代理IP可以有效隐藏真实IP地址&#xff0c;避免被目标网站封禁。本文将通过实际示例&#xff0c;展示如何在Python中使用代理IP进行网络爬虫。 1. 环境准备 首先&#xff0c;确保您已安装Python和所需的库。在本示…...

样式,常用组件

3、代码实现登录的思路 设置属性的成员方法都有统一的命名规范&#xff1a; set&#xff08;&#xff09;//就是某种属性的名字 父窗口&#xff1a;组件嵌套到那个主窗口中&#xff0c;这个主窗口就是父窗口 第一步&#xff1a;创建一个标签对象用来显示登录界面的标题 QLabe…...

Django Project | 云笔记练习项目

文章目录 功能整体架构流程搭建平台环境子功能先创建用户表 并同步到数据库1.用户注册密码存储 -- 哈希算法唯一索引引发的重复问题 try登陆状态保持 -- 详细看用户登录状态 2. 用户登录会话状态时间 cookie用户登录状态校验 3. 网站首页4.退出登录5.笔记模块 列表页添加笔记 …...

Zookeeper的监听机制

Zookeeper的监听机制是Zookeeper框架中一个至关重要的功能&#xff0c;它实现了分布式系统中数据状态变化的实时通知&#xff0c;使得客户端能够及时响应并处理这些变化。下面将详细解析Zookeeper的监听机制及其原理&#xff0c;包括监听器的注册、事件通知的处理、监听器的特点…...

Swift withAnimation 动画完成监听

在ios17中withAnimation有completion方法可以监听动画完成&#xff0c;但是低于ios17没有&#xff0c;需要自定义一个监听器&#xff0c;原理就是通过AnimatableModifier可以监听到值的didSet修改&#xff0c;我们就可以调用回调函数。 代码 // 动画完成监听 struct Animatabl…...

场外期权交易:找到适合你的那一款

各位期权爱好者们&#xff01;今天咱们来聊聊在进行场外期权交易时&#xff0c;怎么去评估和选择适合自己风险承受能力的期权产品。 第一&#xff0c;你得对自己有个清楚的认识。想想看&#xff0c;你是那种激进型的冒险家&#xff0c;还是保守型的稳健派呢&#xff1f;了解自己…...

Elasticsearch-使用java 批量插入文档

首先创建两个实体类&#xff0c;用于存放所需值 开始编写接口&#xff0c;这里我使用的是RestController风格&#xff0c;然后使用PostMapping注解&#xff0c;入参根据自己的需求自定义&#xff0c;没有固定规范 这里实现接口的方法 然后重写接口中的方法&#xff08;编写核心…...

【区块链+食品安全】农业产业全过程溯源云平台 | FISCO BCOS应用案例

近年来&#xff0c;食品安全问题频发&#xff0c;尤其疫情期间&#xff0c;海鲜、冷冻畜牧产品的入口安全成为大众关注焦点&#xff0c;追溯、确保相关产品生产、运输、售卖等环节的信息真实、有效&#xff0c;成为保证食品安全的核心环节。浙江天演维真网络科技股份有限公司基…...

每日面试题Day2

C语言中 # 和 ## 的用法 # 是 字符串化操作符,定义时用括号代表参数传递, 可以把传入的参数名替换成带双引号的字符串 定义: #define a(b) #a 使用:a(123) 编译时会展开成 "123" ## 是字符串连接符,定义时用括号代表参数传递, 可以把参数在宏定义的字符…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...