Python实战:定时对网站进行签到

2022-11-28 14:02:54 浏览数 (1)

人生苦短,快学Python!

大家好,我是朱小五。之前我曾经写过一个Python改变生活系列的文章,介绍自己如何使用Python解决了各种各样的日常需求。在这其中有一篇文章《Python改变生活 | 利用Selenium实现网站自动签到》,就是以我亲身的经历来讲解如何实现某网站的定时签到。

不瞒大家说,这个方法非常实用,一年前的代码至今仍然可以正常使用。但我今年年初时候买了个服务器,就寻思将这些本地电脑的定时任务都迁移到服务器上。这个时候再去回看之前的代码,使用Selenium作为我们的自动签到解决方案就显得有些“笨重”了。

我今天呢,要给大家分享一下升级款——request方式。

具体做法

首先打开我们需要签到的网站,使用Chrome浏览器的F12快捷键(或通过鼠标右键菜单“检查”)打开浏览器的开发者工具,点击 Network 查看所有加载的请求。

如下方动图所示,这个时候我们手动点击签到,就会发现出现了一个新的post请求(checkin),不出所料这便是我们签到的请求。

▲点击签到抓取请求

而我们要做的事就是将该请求转换为Python代码,具体的方法也非常简单,详见之前的文章:每一个搞爬虫的人,都应该知道的神器!其中我们分享了两种可以一键将curl请求命令转Python请求代码的方法。

回到前文一开始发现的新请求,如下图所示,右键复制网络抓到的网络请求为cURL(bash)。

▲复制cURL(bash)

然后打开网站:https://curl.trillworks.com/

将刚刚复制的内容,填写该网站左侧,右侧同时生成了对应的 python requests 代码。

代码语言:javascript复制
import requests

headers = {你自己的headers}
cookies = {你自己的cookies}

response = requests.post('https://*********.org/user/checkin', cookies=cookies, headers=headers)

剩下的事就很简单了,只需要每天定时执行该代码(模拟发起post签到请求)就可以实现该网站签到。

与之前的方法相比,最大的优势就是代码更精简、执行时间更短。selenium实现自动签到需要模拟浏览器进行加载、点击操作,即便用上显性等待等操作也只能控制到10秒左右.

这个签到代码除了增加定时功能,还可以增加通知功能(比如通过微信/飞书/钉钉来提醒自己签到成功 签到结果)。

这些技巧其实在我的新书《快学Python:自动化办公轻松实战》中都有详细介绍.

比如在9.3.4章节和9.4.4章节中分别用两个案例来演示定时机器人和飞书机器人(微信/企业微信/钉钉在其他章节)。

代码语言:javascript复制
├──书籍《快学Python:自动化办公轻松实战》
│   ├── 9.3.4 案例 :Python 机器人定时发送消息
│   ├── 9.4.4 案例 :利用 Python 制作飞书机器人

书中的案例都是来源于真实需求,而我自己也确实是这么做的,定时任务可以这样写:

代码语言:javascript复制
import schedule
import requests

headers = {你自己的headers}
cookies = {你自己的cookies}

def job():
    res = requests.post('https://*********.org/user/checkin', cookies=cookies, headers=headers)

schedule.every().day.at("09:50").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

比如今天给大家介绍的网站签到方法,已经在我的服务器正常运行半年多了,同时每天早上9.30我的飞书都能收到签到成功的提醒。

人生苦短,快学Python!已经购买了我的新书《快学Python:自动化办公轻松实战》的同学,可以查看章节快速入门Python,并掌握各种Python自动化办公小技巧。

如果大家对后续的升级(定时 通知)感兴趣,请给本文点个赞,我会继续给大家分享!

最后一句,人生苦短,快学Python!

0 人点赞