1. 写在前面
大家写博客的可能都知道,有时候我们或多或少会认识一些志同道合的博主。大家在写博客的时候偶尔也都会彼此之间相互支持一下
再如果看到自己感兴趣的文章,想收藏一下。这些需求我们目前大部分人都自己用手去操作,这是非常费力的。所以我浅研了一下写了一个小爬虫工具,以此来解放我们的双手,让程序帮助我们完成以上的这些操作!
声明:本文所涉及的技术爬虫示例仅供学习和研究之用!请大家在合法范围内使用爬虫技术,并尊重网站的使用规则和隐私政策
2. 进入主题
首先我们需要先登陆我们自己的账号,大部分的操作都是依赖账号捆绑的,我们先在用户登陆框输入账号信息看一下登陆提交的表单信息,如下:
根据上图登陆提交参数,我们就可以实现代码:
import requests
session = requests.session()
account = '账号ID'
headers = {
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Type': 'application/json;charset=UTF-8',
'Origin': 'https://passport.csdn.net',
'Referer': 'https://passport.csdn.net/login?code=applets',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
'X-Tingyun-Id': 'im-pGljNfnc;r=533164990',
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
}
data = '{"userIdentification":"'+ f"{account}" +'",
"pwdOrVerifyCode":"密码","loginType":"1",
"webUmidToken":"","uaToken":""}'
response = session.post(
'https://passport.csdn.net/v1/register/pc/login/doLogin',
headers=headers,
data=data
)
data参数内需要我们更换的就是账号与密码了,更换即可
接下来我们post请求登陆后,就需要我们使用cookie保持登陆状态进行后续的点赞、评论、收藏
接下来我们看一看点赞是如何实现的,首先我们点赞查看一下请求信息:
可以看到点赞接口是非常简单的,提交的参数只有一个文章ID,那么我们开始实现如下:
data = {
'articleId': 文章ID,
}
response = session.post(
"https://blog.csdn.net//phoenix/web/v1/article/like",
headers=self.headers,
data=data,
cookies=session.cookies
)
接着我们看看评论是如何实现的,评论提交请求也是非常简单的。基本上没有太复杂的参数提交,也没有加密都是明文
那么我们的评论实现代码如下:
data = {
'commentId': '',
'content': '要评论的内容',
'articleId': '文章ID'
}
response = self.session.post('https://blog.csdn.net/phoenix/web/v1/comment/submit', headers=self.headers, cookies=session.cookies, data=data)
最后我们看一下收藏是如果去实现的,收藏相比前两项稍微多了一项请求,可以看到首先我们点击收藏的时候弹出了一个框,是我们的收藏夹
所以第一步我们需要先获取收藏夹的ID
headers = {
'Accept': 'application/json, text/plain, */*',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Type': 'application/json;charset=UTF-8',
'Origin': 'https://passport.csdn.net',
'Referer': 'https://passport.csdn.net/login?code=applets',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
'X-Tingyun-Id': 'im-pGljNfnc;r=533164990',
'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
}
# 收藏
params = (
('url', 'https://blog.csdn.net/qiulin_wu/article/details/文章ID'), # 收藏的网站
)
# 获取收藏夹id
response = self.session.get('https://mp-action.csdn.net/interact/wrapper/pc/favorite/v1/api/folderListWithCheck', headers=headers, params=params, cookies=session.cookies)
folderId = response.json().get("data").get("result")[0].get("ID")
最后我们就剩下收藏操作了,如下:
可以看到收藏提交的也是一堆参数,不过也都是比较简单的,代码实现如下:
# 一堆参数
username = '自己的账号ID'
data = '{
"url":"https://blog.csdn.net/qiulin_wu/article/details/132106681",
"source":"blog",
"sourceId":文章ID,
"author":"要收藏文章的作者ID,
"title":"title","description":"description",
"fromType":"PC",
"username":"'+ f"{username}" +'","folderIdList":[%d]}' % folderId
response = self.session.post('https://mp-action.csdn.net/interact/wrapper/pc/favorite/v1/api/addFavoriteInFolds', headers=headers, data=data.encode('utf-8'), cookies=cookie)
folderId这个字段的就是上面收藏夹请求拿到的ID
好的,到此我们就将一键三连完美的用程序实现出来了。现在我们看一看效果:
好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章