一个自动签到脚本的挣扎之路

新人培训听说有人做了自动签到的脚本,我对其中最困惑的是定时任务的开启,不过既然有了想法就要做起来,先完成手动签到再说!初步打算用python调用url,然后用c做个定时任务。

配置环境及必要库

受单位限制,电脑都不能上网,只能选择集成包去安装,这样可以少下一些库。python官网下载64位即可,安装很顺利。python自己的库分为标准库和第三方库,一般使用第三方库需要安装,这里记录一下离线安装方式。【无网状态下,安装python库】首先需要去外网搞到python库的安装包python库下载。将下载的安装包导入电脑。

下载后解压到当前路径, cmd定位到安装包路径,使用命令 python setup.py install 命令安装。

调用url,登录并签到

# -*- coding:utf-8 -*- 
import json
import urllib.request
import datetime
import time


from selenium import webdriver
from datetime import datetime
from time import sleep

  
# 模拟浏览器打开网站
browser = webdriver.Chrome()
browser.get('网站地址')
# 将窗口最大化
 browser.maximize_window()
      
# 根据路径找到按钮,并模拟进行点击
browser.find_element_by_xpath('//*[@id="login_div"]').click()
# 延时2秒,以便网页加载所有元素,避免之后找不到对应的元素
time.sleep(2)
      
# 这里是找到输入框,发送要输入的用户名和密码,模拟登陆
browser.find_element_by_xpath('//*[@id="username"]').send_keys("Spring")
browser.find_element_by_xpath('//*[@id="pwd"]').send_keys("123456")
# 在输入用户名和密码之后,点击登陆按钮
browser.find_element_by_xpath(''//*[@id="denglv"]'').click()
time.sleep(2)    
# 点击登陆后的页面中的签到,跳转到签到页面
browser.find_element_by_id('//*[@id="denglv2"]').click()
    time.sleep(2)   

print("签到成功")
      
# 脚本运行成功,退出浏览器
browser.quit()

这里你可以用find_element_by_xpath 也可以用find_element_by_id,绝对路径包容性比较好,建议用xpath,如果一个属性定位不到页面原件,也可以考虑用两个属性叠加

##标签用*代替指定一个元素
find_element_by_xpath("//*[@id='Spring']")

##用两种属性定位一个元素
find_element_by_xpath("//font[@id='Spring' and @class='so']")

##文本定位
find_element_by_xpath("//font[text()='登录']")

遇到的问题

1、报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。

2、selenium.common.exceptions.WebDriverException: Message: Service chromedriver  unexpectedly exited. Statued code was :1

爬虫库selenium在模拟浏览器打开网址时,

browser =  webdriver.Chrome()

启动异常,有可能是因为windows使用的子进程进行回响时未得到响应,也可能是路径异常导致。

未得到响应解决办法:在subprocess.py文件中找到class Popen(object),并将__init__方法中的shell=False修改为shell=True

路径错误解决办法使用反斜杠分割,添加系统目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值