爬虫_Day 4 听说有个叫selenium的库可以解放双手 wandou

本文介绍了如何使用selenium自动化点击和答题,以减轻网课带来的负担。通过Katalon Recorder插件录制并转换为Python代码,配合Chrome内核驱动实现自动化。文章还提及了定位元素的方法,如class name、id、xpath,并解决iframe问题,以及如何在遇到错误时通过异常处理退出内核驱动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天已经被网课快逼疯了

课程不仅枯燥时间还长

于是决定在安排他一波

实现自动点击以及答题

开开电脑刷就完了

打会王者他不香吗

于是今天的主角就是selenium 配合Google Chrome


分享一个插件

Katalon Recorder

这个插件可以实现录制然后翻译出py代码

是不是很爽

说实话这个库,纯是为了偷懒才发现的

开始装逼了

需要自己安装一下

pip install selenium

安装好了之后呢

需要配合 相应 的内核驱动他才可以自己动起来

什么版本的浏览器就下载什么版本的内核驱动

Google Chrome内核驱动全版本下载地址

驱动下载​chromedriver.storage.googleapis.com

 

edge firefox 浏览器都可以的

不要用国产浏览器 **的很

其他浏览器需要自己百度一下

啥都准备好了,,开撸

from selenium import webdriver

要是报错就说明你需要添加一下这个库

在设置中然后找到Project Interpreter

然后点击

好了就要启动起来浏览器

driver = webdriver.Chrome()

好啦,他启动起来了

然后

我们就要开始登陆我们上课的平台 了

登录 - 科苑创工场 - 创业教育协同平台 - Powered By EduSoho​www.cgcedu.com

 

没错就是这个平台恶心人

我们请求一下

url = "http://www.cgcedu.com/login"
driver.get(url)

下来就是要输入账号密码然后登录

那就需要 定位到这些元素吧

怎么定位呢

定位有哪些方法

我们首先打开开发者工具(F12)看一下

比如我们这个平台

选择要定位的元素ctrl + shift + c 就可以定位到了

可以使用class name 还有 id 去定位,name css 定位吧

还可以使用xpath定位

我们右键然后copy---copy xpath

//*[@id="content-container"]/div/div[1]/a[2]
我们就得到了他的路径

我们知道了怎么定位元素我们点击一下登录按钮看一下效果

不输入账号密码

# click就是点击的意思
driver.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
 
 

看来是点击成功了

那怎么输入账号密码呢

就需要用send_keys()方法

    driver.find_element_by_xpath('//*[@id="login_username"]').send_keys("zxcv")
    # 输入账号
    driver.find_element_by_xpath('//*[@id="login_password"]').send_keys("chenchen123")
    # 输入密码

OK啦也成功了,这样就可以自动登录了

我们想要返回标签的内容怎么办呢

我们想要获取这个名字怎么办

就需要使用get_attribute()方法

源码是这样的

    name = driver.find_element_by_class_name('link-dark').get_attribute("textContent")
    print(name)

登录后就很顺利的取到了

其他几种可以参考这位知乎老哥的操作

Roe:常见selenium定位操作演示​zhuanlan.zhihu.com图标

当你定位某一元素定位不到的时候需要看一下是有没有iframe

是否需要切换表单

比如这个平台的例子

我想获取到视频播放时间以便判断是否需要进行点击下一节

我怎么也没定位到,,心中只想F**K 他 一万遍

好好一看 有个这个玩意!!!

看这里

这个时候你定位是定位不到的

需要切换表单咋在进行操作

怎么整呢

我们通过id来定位到他

name也可以

driver.switch_to.frame("viewerIframe") # id 定位

要是遇见那种没有name 也没有 id 的就** 了

就需要从顶开始进就比较麻烦了

比如超星尔雅就是嵌套的iframe

还没有id,name

通过上面的代码我们就进入了iframe中,可以继续操作了

我们要获取时间就可以这样写了

driver.find_element_by_class_name('current-time').get_attribute("textContent")

这里还有要注意的地方,就是你切换进去了,要是想在操作主界面的元素就需

要切换出来

driver.switch_to.default_content()
# 不管他有几层的嵌套直接跳出最外层
# 要是双层的想要切换上一层就需要
driver.switch_to.parent_frame()
 

看到这里是不是凌乱了不少

这些都是网课逼出来的

叫我上网课看视频

不可能!!!!

Okl

还有一点测试 的时候使用异常

以确保出错了也可以退出内核驱动

要不是没有关闭的

可以打开任务管理器看一下

try:
    name = driver.find_element_by_class_name('link-dark').get_attribute("textContent")
    print(name)
except:
    print("失败")
    driver.quit()

就分享这么多吧。

嗯???不对啊

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值