selenium实现CSDN每天自动签到

众所周知,CSDN是有签到福利的,但是嘛,对于我这种“懒虫”,我怎么可能每天都记得去签到hhh。所以,自动签到助手必须要来整一个!

一、思路

思路很简单,玩过selenium的都知道,用webdriver模块模拟打开CSDN签到页面https://i.csdn.net/#/uc/reward,然后模拟点击签到按钮即可。

二、难点

这里主要有两个要解决的问题。

1. 自动登录

第一个是要让Chrome记住之前的登录状态,不然每天程序运行的时候都得掏出手机来重新验证,一点都不人性化。
解决方法就是创建ChromeOptions,即Chrome浏览器的配置参数,然后将Chrome的默认配置文件夹输入进去,这样selenium所开启的Chrome就回去读取这个目录下的配置文件了,以前有记住过密码什么的网站就都在了。

options = webdriver.ChromeOptions()
options.add_argument(r"user-data-dir=C:\Users\lenovo\AppData\Local\Google\Chrome\User Data")

Chrome的配置文件夹具体地址要去找一下,不一定是我这个地址。
配置完后再启动Chrome:

driver = webdriver.Chrome("chromedriver",0,options)
driver.get("https://i.csdn.net/#/uc/reward")

selenium实现CSDN每天自动签到_第1张图片

第一次手动验证登录,以后每次就会自动登录上了。

2. 模拟点击按钮

通过selenium来实现模拟按键主要有两种思路,一种是分析网页源代码找到按钮组件,可以实现精确点击,另一种是通过手动设置坐标来点击,虽然简单直接但是不够精确。

在这儿呢,通过分析网页源代码会发现里面压根找不到按钮组件,所以没办法只能用第二种暴力方法了!

通过多次尝试我找到了按钮在页面上的大致坐标(1000,500)。

ActionChains(driver).move_by_offset(1000, 500).click().perform()

三、完整代码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

options = webdriver.ChromeOptions()
options.add_argument(r"user-data-dir=C:\Users\lenovo\AppData\Local\Google\Chrome\User Data")

driver = webdriver.Chrome("chromedriver",0,options)
driver.get("https://i.csdn.net/#/uc/reward")

time.sleep(5)

ActionChains(driver).move_by_offset(1000, 500).click().perform()

四、每天自动运行签到程序

这部分其实之前有写过类似的实现方法,大家可以参考一下之前的一篇博文中关于云服务器的内容,这里就不多赘述。

你可能感兴趣的:(爬虫,selenium,python,chrome)