Python实现自动控制登录网页

最近感觉数据结构学的有点困难,一直没什么进展,下午实在学不进去了,就想随便找点其他的东西学学。想到之前一直想做一个刷课脚本,就开始查资料尝试写一下。
首先是尝试打开一个网页。
首先是安装webdriver库,然后写了一个最简单的打开百度网页的代码,

from selenium import webdriver
import time
browser=webdriver.Chrome()
browser.get("https://baidu.com/")

发现打不开,错误是“raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH.”
查了资料发现是因为没有配置好chromedriver,需要下载一个文件。
下载和使用流程
1.打开chrome 输入 “chrome://version/”,查看自己的版本号
2.访问此网站 http://chromedriver.storage.googleapis.com/index.html 然后选择合适版本的driver
3.将文件解压,然后复制解压文件的地址,作为参数传入到webdriver.Chrome()

from selenium import webdriver
import time
chrome_driver=r"C:\Users\wjw\Downloads\chromedriver_win32 (1)\chromedriver.exe"
browser=webdriver.Chrome(chrome_driver)
browser.get("https://mail.qq.com/")

但是有些版本号可能找不到,比如我的版本号就是”Microsoft Edge 96.0.1054.29 (官方内部版本) (64 位)“,我找了好久都没有找到,后来就随便下了一个版本的,然后运行上面的代码还是会报错,
在这里插入图片描述

大概意思就是版本号不对,但是报错信息中会提示你正确的版本号,然后就按这个版本号去下载(如果还没有一模一样的就下载最接近的),然后重复上面第三步,这时候代码就可以顺利运行了。
在这里插入图片描述
运行结果就是这样,成功打开了百度。
然后尝试实现一下登录功能
我先尝试的是登录qq邮箱。先打开qq邮箱网页,我们主要想实现的是在用户名和密码输入框中输入数据,然后点击登录按钮,就实现了登录(当然还有滑动块验证码,但是这个要用到图形识别的知识就没做),那么就要先找到这三个元素的位置,元素定位的方法有很多,详细的可以看链接: link.
这里我是用id属性进行定位,右击用户的输入框,选择“检查”,就可以查看网页的html,然后就可以看到这个输入框的各种属性,如图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的是两个输入框和登录按钮的源码,其中id是我们所需要的
然后就借助id来定位元素和实现输入和点击

from selenium import webdriver
import time
chrome_driver=r"C:\Users\wjw\Downloads\chromedriver_win32 (1)\chromedriver.exe"
browser=webdriver.Chrome(chrome_driver)
browser.get("https://baidu.com/")


# 定位到账户的输入框
browser.find_element_by_id("u").clear()
time.sleep(1)

# 向输入框中填入账户信息
browser.find_element_by_id("u").send_keys("qq号")
time.sleep(2)

# 定位密码的输入框
browser.find_element_by_id("p").clear()
time.sleep(1)

# 填入密码信息
browser.find_element_by_id("p").send_keys("密码")
time.sleep(1)



# 定位登录按钮,进行登录
browser.find_element_by_id("login_button").click()
time.sleep(5)

# 获取登录的cookies信息
# print(browser.get_cookies())

但是报错了,错误是
在这里插入图片描述
查资料发现可能是有iframe,导致无法查找到元素,iframe相当于另一个html文件,我们必须进入到这个文件里面才能查找到里面的元素。在网页的源码中找到了iframe
在这里插入图片描述
那么首先就要先进入到iframe,方法是switch_to.frame(iframe的id或者name)
(如果没有id和name但有class标记,需要先获取到对应的frame,然后在切换至该frame
frame1 = driver.find_element_by_css_selector(class名)
driver.switch_to_frame(frame1)

完整代码:

from selenium import webdriver
import time
chrome_driver=r"C:\Users\wjw\Downloads\chromedriver_win32 (1)\chromedriver.exe"
browser=webdriver.Chrome(chrome_driver)
browser.get("https://mail.qq.com/")

#切换frame
browser.switch_to.frame("login_frame")

# 定位到账户的输入框
browser.find_element_by_id("u").clear()
time.sleep(1)

# 向输入框中填入账户信息
browser.find_element_by_id("u").send_keys(“qq号”)
time.sleep(2)

# 定位密码的输入框
browser.find_element_by_id("p").clear()
time.sleep(1)

# 填入密码信息
browser.find_element_by_id("p").send_keys("密码")
time.sleep(1)



# 定位登录按钮,进行登录
browser.find_element_by_id("login_button").click()
time.sleep(5)

# 获取登录的cookies信息
print(browser.get_cookies())

这样就可以实现了(无验证码的)登录功能
最后再试一下登录学习通,打开课程的功能
代码如下

from selenium import webdriver
import time
chrome_driver=r"C:\Users\wjw\Downloads\chromedriver_win32 (1)\chromedriver.exe"
browser=webdriver.Chrome(chrome_driver)
# 打开学习通登录界面
browser.get("http://passport2.chaoxing.com/login?fid=&newversion=true&refer=http%3A%2F%2Fi.chaoxing.com")

# 定位到账户的输入框
browser.find_element_by_id("phone").clear()
time.sleep(1)

# 向输入框中填入账户信息
browser.find_element_by_id("phone").send_keys("账号")
time.sleep(2)

# 定位密码的输入框
browser.find_element_by_id("pwd").clear()
time.sleep(1)

# 填入密码信息
browser.find_element_by_id("pwd").send_keys("密码")
time.sleep(1)



# 定位登录按钮,进行登录
browser.find_element_by_id("loginBtn").click()
time.sleep(5)

# 获取登录的cookies信息
print(browser.get_cookies())

# 打开目标课程
browser.get("https://mooc1-1.chaoxing.com/visit/stucoursemiddle?courseid=96645894&clazzid=45241487&vc=1&cpi=148330489")

#点击课程中的第一节
browser.find_element_by_xpath("//h3[1]/a").click()

在这里插入图片描述
最后实现的效果就是打开了视频播放的界面,但是还不能实现视频的播放。

  • 9
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Python实现网站的自动登录,可以使用Selenium库。首先需要导入Selenium库,并实例化浏览器对象。然后使用浏览器对象打开目标网页,并定位到账号和密码的输入框,分别清空输入框内容并填入账号和密码信息。最后定位到登录按钮,并点击进行登录。下面是一个示例代码: ```python from selenium import webdriver import time # 设置Chrome驱动的路径 chrome_driver = "C:\path\to\chromedriver.exe" # 实例化浏览器对象 browser = webdriver.Chrome(chrome_driver) # 打开目标网页 browser.get("https://www.example.com") # 定位到账号的输入框 account_input = browser.find_element_by_id("account") account_input.clear() # 清空输入框内容 time.sleep(1) account_input.send_keys("Your_Account") # 填入账号信息 time.sleep(1) # 定位到密码的输入框 password_input = browser.find_element_by_id("password") password_input.clear() # 清空输入框内容 time.sleep(1) password_input.send_keys("Your_Password") # 填入密码信息 time.sleep(1) # 定位登录按钮,并点击进行登录 login_button = browser.find_element_by_id("login_button") login_button.click() time.sleep(5) # 获取登录后的页面内容或进行后续操作 page_content = browser.page_source # 关闭浏览器 browser.quit() ``` 注意:在上面的示例代码中,需要将"chrome_driver"变量的值设置为你本地Chrome驱动的路径,并将"browser.get"方法的参数替换为你要登录的网址。另外,需要将账号和密码的输入框的id属性值以及登录按钮的id属性值替换为目标网页中对应元素的id属性值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python实现自动控制登录网页](https://blog.csdn.net/justgo3/article/details/121565940)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python代码实现自动登录](https://blog.csdn.net/weixin_47261870/article/details/123778466)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值