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

news2024/11/14 5:33:54

目录

一、前言

二、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社区管理规定,因此本文并不提供源代码和相关任何可以使用的程序,本文仅涉及原理,供学习交流。

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

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

相关文章

linxu命令diff:比较两个或多个文件的内容差异的工具diff详解

目录 一、概述 二、用法 1、基本语法 2、基本用法 3、常用选项 4、获取帮助 三、输出格式 1、正常格式(normal diff) 2、上下文格式(context diff) 3、合并格式(unified diff) 四、示例…

【面试宝典】java多线程面试题总结(中)

::: tip 这个里面的内容对应 Java并发编程基础知识 书籍中的内容。需要的画私聊我哈!!! ::: 一、简介 Java内存模型(Java Memory Model,简称JMM)是一种抽象的概念,它定义了Java程序中各个变量…

《计算机组成原理》(第3版)第7章 指令系统 复习笔记

第7章 指令系统 一、机器指令 机器语言是由一条条语句构成的,每一条语句又能准确表达某种语义。计算机就是连续执行每一条机器语句而实现全自动工作的,人们习惯把每一条机器语言的语句称为机器指令,而又将全部机器指令的集合称为机器的指令…

C语言--不可不学的指针

1. 指针是什么 内存是什么? 内存是电脑上特别重要的存储器,计算机中的程序的运行都是在内存中进行的,为了有效使用内存,我们会把内存划分为一个个小的内存单元,比如把4G/8G/16G/32G的内存划分为一个个以字节为单位的空…

vulnhub系列:Momentum2

vulnhub系列:Momentum2 靶机下载 一、信息收集 nmap扫描C段存活 nmap 192.168.23.0/24目标地址为192.168.23.132 nmap扫描端口 nmap 192.168.23.132发现开放端口:22、80 目录扫描 python3 dirsearch.py -u http://192.168.23.132扫描发现目录&…

【OCR 学习笔记】二值化——全局阈值方法

二值化——全局阈值方法 固定阈值方法Otsu算法在OpenCV中的实现固定阈值Otsu算法 图像二值化(Image Binarization)是指将像素点的灰度值设为0或255,使图像呈现明显的黑白效果。二值化一方面减少了数据维度,另一方面通过排除原图中…

MyBatis--XML映射文件

MyBatis–XML映射文件 lombok工具包 为了解决声明实体类的get()和set()函数臃肿的问题,我们使用lombok工具包。 我们看一下lombok工具包为我们提供的注解: XML映射文件 我们需要遵守下面的规则: 首先XML映射文件和Mapper接口包应该在同…

用栈访问最后若干元素——682、71、388

682. 棒球比赛(简单) 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[…

2024 Studio One6.6.1最新版中文版图文破解版教程

在数字音频工作站(DAW)的浩瀚宇宙中,Studio One始终以其独特的魅力和强大的功能脱颖而出。随着6.6.1版本的发布,这款由PreSonus精心打造的音乐制作软件再次迈上了一个全新的台阶,为音乐创作者们带来了前所未有的创作体…

【C++】vector及模拟实现

🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 💥1、vector的主要函数接口💥2、vector的模拟实现💥2.1 构造和析构&…

Python 3 入门基础知识【1】数据类型 安装下载 推荐

Python的重要性这里不多说了,是一门面向对象的解释型语言,使用缩进作为逻辑层次,功能强大且容易上手,其受欢迎程度也在逐年上升的。这里回顾一下python的基础知识,以便自己查看,欢迎正在学习python的同学参…

ArcGIS10.8 安装教程

目录 一、环境及安装包准备 二、安装流程 1、解压安装包ArcGIS_108.rar 2、安装 三、汉化 四、激活 五、自定义菜单(可选) 六、打开软件按查看 七、安装过程中出现的报错 八、其他 一、环境及安装包准备 安装环境:win7 安装包下载…

[FBCTF2019]RCEService1

打开题目 它给出了提示要求json格式,先尝试一下{"cmd":"ls"} 的确可以执行。接下来就记录过滤了那些关键字。发现键盘上有的特殊符号好像都被过滤。 flag在home目录下,不知道为什么find命令返回为空。。。 cat在这里仍然不能用。…

go语言后端开发学习(六) ——基于雪花算法生成用户ID

前言 在我们日常进行开发的时候,不可避免的会出现对用户表的操作,而为了保证每一个用户的唯一性,这就需要我们创建一个唯一性的id,但是现在有一个问题,如果我们仅仅像通过自增这样方式来创建唯一的id,这无疑是非常不合…

第N5周:Pytorch文本分类入门

本文为365天深度学习训练营 中的学习记录博客原作者:K同学啊 任务: ●1. 了解文本分类的基本流程 ●2. 学习常用数据清洗方法 ●3. 学习如何使用jieba实现英文分词 ●4. 学习如何构建文本向量 一、前期准备 环境安装 这是一个使用PyTorch实现的简单文…

超详细教程:贴片电阻要怎么焊接?

在电子硬件中,焊接是必不可少的一个技能。 但是在实际的学习或者工作过程中,往往会碰上各种各样的焊接条件,焊接环境,如果是对于直插式的元件,比如说焊接一个直插式LED灯或者直插式电解电容,可能很容易焊接…

15个网络工程师必须记住的专业术语和概念

网络工程师在日常工作中确实需要掌握大量的专业术语和概念,这些术语和概念是理解和应用网络技术的基础。以下是一些网络工程师必知的重要术语及其应用场景: 1. IP地址(IP Address) 定义:互联网协议地址,用…

Elasticsearch 8 RAG 技术分享

作者:来自 Elastic 中国区首席架构师 Jerry 本文由 Elastic 中国区首席架构师 Jerry Zhu 在【AI 搜索 TechDay】上的分享整理而成。【AI 搜索 TechDay】 是 Elastic 和阿里云联合主办的 AI 技术 Meetup 系列,聚焦企业级 AI 搜索应用和开发者动手实践&am…

framebuffer总结

FrameBuffer,可以译作"帧缓冲",有时简称为 fbdrv。 这是一种独立于硬件的抽象图形设备。 是Linux为显示设备提供的一个接口,把显存抽象后的一种设备, 允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作 什么是…