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