利用Python Selenium库模拟登陆

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法。你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆。本文讲的是登陆所有网站的一种方法,并不局限于微博,仅用其作为例子来讲解。

0x01 材料必备

  • Python环境
  • selenium库
  • Chrome XPath Helper 插件(可选)

    PS:selenium是借助浏览器而运行的,因此需要额外下载一款小型浏览器。本文使用的是Chrome Webdriver

0x02 思路

  • 导入模块,创建webdriver对象
  • 打开登录页面
  • 找到元件传入内容

0x03 正式开始

导入selenium库

1
from selenium import webdriver

明确模拟浏览器在电脑中存放的位置,比如我放在了当前文件目录

用selenium的webdriver方程指明浏览器的路径,同时打开一个浏览器。模拟浏览器有多种可选,比如Firefox, Safari。本次用的是谷歌的模拟浏览器。注意:’.Chome’是大写字母。

1
driver = webdriver.Chrome(executable_path="./chromedriver.exe")

打开网页(本次模拟登陆新浪微博)

1
driver.get('https://login.sina.com.cn/signup/signin.php?entry=sso')

利用XPath Helper 查找元件位置并传入数据

1
2
3
driver.find_element_by_xpath(登陆元件位置).send_keys('账号')
driver.find_element_by_xpath(密码元件位置).send_keys('密码')
driver.find_element_by_xpath(登陆按钮).click()

0x04 附上懒人脚本

1
2
3
4
5
6
7
8
9
from selenium import webdriver
driver = webdriver.Chrome(executable_path="./chromedriver.exe")
driver.get('https://login.sina.com.cn/signup/signin.php?entry=sso')
name = raw_input('Please input your account number : ')
password = raw_input('Please input your password : ')
driver.find_element_by_xpath(r"/html/body/div[@id='wrap']/div[@class='iforgot_bd']/div[@class='iforgot_cont']/div[@class='i_mod']/form[@id='vForm']/div[@class='main_cen']/div[@class='form_mod']/ul[@class='form_list']/li[@class='item'][1]/input[@id='username']").send_keys(name)
driver.find_element_by_xpath(r"/html/body/div[@id='wrap']/div[@class='iforgot_bd']/div[@class='iforgot_cont']/div[@class='i_mod']/form[@id='vForm']/div[@class='main_cen']/div[@class='form_mod']/ul[@class='form_list']/li[@class='item'][2]/input[@id='password']").send_keys(password)
driver.find_element_by_xpath(r"/html/body/div[@id='wrap']/div[@class='iforgot_bd']/div[@class='iforgot_cont']/div[@class='i_mod']/form[@id='vForm']/div[@class='main_cen']/div[@class='form_mod']/ul[@class='form_list']/li[@class='item'][6]/div[@class='btn_mod']/input[@class='W_btn_a btn_34px']").click()

0x05 附加:将cookie传入requests

1
2
3
4
5
6
req = requests.Session()
cookies = wd.get_cookies()
for cookie in cookies:
req.cookies.set(cookie['name'],cookie['value'])
后面就可以直接用req访问页面了

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2020 Damit5's Blog All Rights Reserved.

UV : | PV :