自动化办公以及网络数据交互的场景当中, 运用实现网站自动登录能够把效率极其显著地提升上去。紧接下来的这篇章将会依托于库为依据进行呈现, 十分详尽地阐述怎样借助实现网页版的账户自动登录, 此涵盖原理、步骤以及代码详解。文章的末尾处附带完整的实现代码。一、实现原理达成百度自动登录的关键所在是借助, 在自动化测试方面的库。它能够模拟浏览器的相关操作, 借此通过编写代码来调控浏览器加载网页, 去定位页面之中的元素, 并且针对这些元素开展操作, 像输入文本, 点击按钮之类的。我们能够借助这个去模拟用户于浏览器里输入用户名以及密码, 接着点击登录按钮的这一历程, 进而达成自动登录该行为的实现。另外, 鉴于百度登录页面存在可能会有动态加载的内容这种情况而言, 我们还得结合显式等待以及隐式等待, 以此来确保在页面元素加载完毕之后再去进行操作, 防止出现找不到元素的那种错误。二、准备工作1安装必要的库代码编写开始之前, 要保证库已安装。要是没安装, 可借pip用以下命令来安装:pip install selenium2下载浏览器驱动得借助浏览器驱动才能够对浏览器实施控制, 就以浏览器为实例来说, 需下载与其所对应的版本, 具体的步骤是这样子的:要查看浏览器版本, 需先打开这款相关的浏览器, 接着点击处于其上的右上角的三个点, 随后对其继续进行选择, 即选择“帮助”, 然后再对应选择“关于 ”这条路, 最终方能查看到当前所使用的这款浏览器的版本号。查看浏览器版本号点开官方下载页面, 从中寻觅与自身浏览器版本相匹配的版本, 依据操作系统去进行对应的压缩包下载此操作。下载确定配置驱动路径: 当下载结束之后, 对压缩包予以解压, 接着把解压所得到的可执行文件路径给记录下来, 在后续的代码里要运用该路径去启动浏览器驱动。三、开展代码实现。1导入必要的库from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service import time上述代码, 导入了相关模块, 其中, 有用于控制浏览器的, By, 是用于指定元素定位方式的, 还有用于配置浏览器驱动的。2配置浏览器驱动并打开百度登录页面# 配置 ChromeDriver 路径需根据实际情况修改 chrome_driver_path D:/Downloads/chromedriver-win64/chromedriver.exe service Service(chrome_driver_path) driver webdriver.Chrome(serviceservice) # 打开百度登录页面 driver.get(https://passport.baidu.com/v2/?login) # 等待页面加载 time.sleep(2)在这段代码里头, 我们明确了的路径, 并且运用对象来开展配置, 接着借助.()去启动浏览器, 最终利用.get()方法把百度登录页面给打开。3切换到用户名密码登录方式因为百度登录页面默认呈现的是扫码登录界面, 所以我们得先转变到用户名密码登录方式。# 切换到用户名密码登录方式 try: switch_button driver.find_element(By.ID, TANGRAM__PSP_3__footerULoginBtn) switch_button.click() time.sleep(1) except Exception as e: print(f切换到用户名密码登录失败: {e})这里进行模拟, 用户点击“用户名登录”这一按钮, 从而切换到用户名密码登录界面。哪一个“用户名登录”所对应的 ID 呢, 可以通过网页源码查找出来。“用户名登录”对应的 ID百度账户用户名密码登录界面4输入用户名和密码# 输入用户名和密码需替换为实际的用户名和密码 username ************* password ************* try: username_input driver.find_element(By.ID, TANGRAM__PSP_3__userName) password_input driver.find_element(By.ID, TANGRAM__PSP_3__password) username_input.send_keys(username) password_input.send_keys(password) except Exception as e: print(f输入用户名和密码失败: {e})查找用户名输入框元素, 其ID是“Name”,查找密码输入框元素, 其ID是“word”。之后运用()方法, 分别往用户名输入框输入内容, 往密码输入框输入内容。查找 ID5点击登录按钮# 点击登录按钮 try: login_button driver.find_element(By.ID, TANGRAM__PSP_3__submit) login_button.click() except Exception as e: print(f点击登录按钮失败: {e})先寻得登录按钮元素, 该元素对应的ID是“it”, 此后借由click()方法来达成登录按钮的点击行为。6等待结果并关闭浏览器# 等待一段时间查看结果 time.sleep(5) # 关闭浏览器 driver.quit()等候 5 秒钟, 从而用以观察登录的结果, 最终借助.quit()把浏览器关闭。四、下载版本要与当下正在用的浏览器版本相匹配, 这是由注意事项驱动的版本匹配要求, 不然也许没办法正常开启浏览器。用户名以及密码的安全, 在实际运用时, 别把用户名和密码直接写进代码里, 能够考虑采用别的安全方式来实施存储与读取, 以此防止信息泄露。百度登录页面的结构会有变化的可能性, 这种变化可能致使元素的ID、类名等定位信息失去效用。要是出现找不到元素的错误情况, 要及时核查页面结构, 并且更新代码当中的元素定位方式。依照上述步骤, 我们达成了借助 达成百度用户名密码自动登录的功能。此项技术不但能够用于百度登录, 也能够延伸至其他支持用户名密码登录的网站, 为自动化操作创造了更多可能性。五、完整实现代码from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service import time # 配置 ChromeDriver 路径需根据实际情况修改 chrome_driver_path D:/Downloads/chromedriver-win64/chromedriver.exe service Service(chrome_driver_path) driver webdriver.Chrome(serviceservice) # 打开百度登录页面 driver.get(https://passport.baidu.com/v2/?login) # 等待页面加载 time.sleep(2) # 切换到用户名密码登录方式 try: switch_button driver.find_element(By.ID, TANGRAM__PSP_3__footerULoginBtn) switch_button.click() time.sleep(1) except Exception as e: print(f切换到用户名密码登录失败: {e}) # 输入用户名和密码需替换为实际的用户名和密码 username ************** password ************** try: username_input driver.find_element(By.ID, TANGRAM__PSP_3__userName) password_input driver.find_element(By.ID, TANGRAM__PSP_3__password) username_input.send_keys(username) password_input.send_keys(password) except Exception as e: print(f输入用户名和密码失败: {e}) # 点击登录按钮 try: login_button driver.find_element(By.ID, TANGRAM__PSP_3__submit) login_button.click() except Exception as e: print(f点击登录按钮失败: {e}) # 等待一段时间查看结果 time.sleep(5) # 关闭浏览器 driver.quit()
