python网络爬虫--网页登录

1、前言

主要用到python的selenium库,通过模仿浏览器行为+定位登录所需的标签位置,实现网页登录功能.最后在码云(gitee)上测试自动登录功能.

2、selenium定位网页元素

关于selenium的使用前准备可以看到我之前的一篇文章python网络爬虫--下载图片.

我们有许多方法对页面的元素进行定位,对于不同的元素,我们使用最优的定位方法即可。Selenium提供了下面的方法进行元素定位:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

通过一个例子来大概说明怎么使用这些方法

<html>
 <body>
  <form id="loginForm">
   <input name="username" type="text" />
   <input name="password" type="password" />
   <input name="continue" type="submit" value="Login" />
  form>
 body>
<html>

2.1 根据Name定位

userName = driver.find_element_by_name("username")

在定位到元素后,我们要将对应的用户名填入表单,使用send_keys方法

userName.send_keys("UserName")

2.2 根据css选择器定位

passWord = driver.find_element_by_css_selector("input[type='password']")
passWord.send_keys("PassWord")

3、Example

通过模拟登录码云(gitee),测试是否成功

首先,在浏览器输入地址https://gitee.com/login,进入登录界面

python网络爬虫--网页登录_第1张图片

然后,进入开发者模式,找到表单对应的元素.
从以下三张图可以看到用户名密码登录按钮分别对应的元素.然后通过上面介绍的元素选择方法,将对应的值提供给表单即可.

python网络爬虫--网页登录_第2张图片

python网络爬虫--网页登录_第3张图片

python网络爬虫--网页登录_第4张图片

具体代码如下:

from selenium import webdriver
import time

def main():
	url = "https://gitee.com/login"
    # 这里改为你的chromedriver地址
	ChromeDriverPath = "path/to/chromedriver"
	driver = webdriver.Chrome(executable_path=ChromeDriverPath)
	driver.get(url)
	# 这里将UserName改为你自己的
	driver.find_element_by_id("user_login").send_keys("UserName")
	# 修改PassWord
	driver.find_element_by_id("user_password").send_keys("PassWord")
	# 获取到登录按钮的driver后,使用click()函数,模拟点击button
	driver.find_element_by_css_selector("input[name='commit']").click()
    
	time.sleep(20)
	driver.quit()
	

if __name__ == "__main__":
	main()

你可能感兴趣的:(python,爬虫,python,selenium)