本帖最后由 lanqi0820 于 2018-7-2 08:13 编辑
最近一直到学爬虫这方面到东西,学到selenium这个模块,最初是模拟登陆,后来就想能否用它来实现黑马论坛自动签到功能,于是就动手写了这个小程序 当然在写到过程中跳了好几个坑,其中之一就是程序调用chromdriver.exe出错,(因为我用到时chrome浏览器来模拟到),网上到解决办法(1将chromedriver.exe添加到环境变量,2直接放在py文件到同一级目录中,3chrome版本和driver版本不匹配),这些问题都解决来之后还是报错,都快放弃都时候决定换个系统(当前用都是win10),下载win7,安装,之后就在也没报这样都错来,巨坑。 [Python] 纯文本查看 复制代码 # coding="utf-8"[/align]from selenium import webdriver
import time
webdriver= webdriver.Chrome()
webdriver.set_window_size(1400,900)
webdriver.get("http://bbs2.itheima.com/member.php?mod=logging&action=login")
webdriver.find_element_by_name("username").send_keys("用户名")
webdriver.find_element_by_name("password").send_keys(("密码"))
# webdriver.find_element_by_link_text("关闭").click()
# time.sleep(5)
webdriver.find_element_by_name("loginsubmit").click()
time.sleep(4)
webdriver.find_element_by_link_text("签到").click()
这里我先来说我找element是遇到的小问题,起初是通过webdriver.find_element_by_id(“username_LYkv7”),跑一下不行,发现原来这个id是每次都会变都,于是用另一种by_name(“username”),密码也是同样 第二个坑是,程序控制浏览器打开不是全屏的,这个浮动的框会挡住 当然我也尝试过将这个浮动框关闭,这个关闭查看源码是个a标签,用javascript设置来点击事件,但似乎并不好用,还是会导致,提交按钮会点到这个浮动框。那我换了个思路,因为不是全屏挡住了,那么把浏览器窗口调大点就好了。(webdriver.set_window_size(1400,900))
登陆进去后,页面会有个跳转,让程序sleep了5秒,等跳转,在找到签到按钮点击即可。因为今天已经签到了,所以直接进到签到后的页面了。 后续的操作等明天签到等时候在来详细研究下如何实现程序来签到。
============分割线=============================7月2日早上补充
不多说来,直接来代码
[AppleScript] 纯文本查看 复制代码 # coding="utf-8"
from selenium import webdriver
import time
webdriver= webdriver.Chrome()
webdriver.set_window_size(1400,900)
webdriver.get("http://bbs2.itheima.com/member.php?mod=logging&action=login")
webdriver.find_element_by_name("username").send_keys("username")
webdriver.find_element_by_name("password").send_keys(("password"))
# webdriver.find_element_by_link_text("关闭").click()
# time.sleep(5)
webdriver.find_element_by_name("loginsubmit").click()
time.sleep(4)
webdriver.find_element_by_id("kx").click() #这是对应的心情图片
webdriver.find_element_by_xpath("//input[@value=2]").click() #这是123对应的模式
webdriver.find_element_by_xpath("//button[@class='pn pnc']").click() #这是4对应的按钮
#webdriver.find_element_by_link_text("签到").click()
time.sleep(3)
webdriver.quit() #自动化调用浏览器后要关闭,如果是无界面的浏览器会一直在内存中,消耗资源
|