python自动化—robobrowser模拟登陆

简介: 简单来说,robobrowser是一个轻量级的浏览器,自动测试库,和selenium类似,但运行比selenium更为隐蔽,因为它不会打开浏览器页面。如果之前的爬虫中你有使用过requests和bs4,那robobrowser绝对会让你爱不释手。

安装: pip install robobrowser

使用场景

  • 模拟登陆: 这一需求在数据爬取的过程中经常会遇到,我们一般的处理方式,是用requests去模拟登陆请求,这对参数简单点的网站来说堪称利器,但对于参数复杂还加密的,就有点费力不讨好了。但如果使用robobrowser,这个过程就会变得极其简单。
    • 操作流程
      1.得到robobrowser对象
      2.打开网站的登陆链接
      3.找到登陆表单,得到表单对象
      4.填写用户名和密码
      5.提交表单
      6.验证是否登陆成功
    • 实例
      使用robobrowser模拟登陆GitHub
'''
 @description:使用robobrowser模拟登陆GitHub
'''

from robobrowser import RoboBrowser

login_url = 'https://github.com/login'

'''生成robobrwser对象, lxml解析器需提前安装  pip install lxml'''
rob = RoboBrowser(history=True,parser='lxml')

rob.open(login_url) #打开登陆页面
login_form = rob.get_form(action="/session") #获取登陆表单,先通过审查元素找到表单的action参数
login_form['login'].value = 'your username' #填写用户名
login_form['password'].value = 'your password' #填写密码
rob.submit_form(login_form) #提交表单

'''通过获取首页github图标a标签链接判断登陆是否成功'''
try:
    href = rob.find('a',class_='Header-link').get('href')
    if href:
        print('登陆成功,href=%s'%href)
except Exception as e:
    print('登陆失败,原因:%s'%e)

验证目标:
验证目标
结果如下:
登陆结果

  • 数据抓取
    因为robobrowser依赖于bs4,所以其数据抓取方法和bs4基本相同,主要有三种方法。

    • find: 抓取页面中的单个元素。
    • find_all: 抓取页面中的多个具有共同属性的元素,结果返回一个列表。
    • select: 元素选择器,用过jquery的应该很熟悉,结果返回一个列表。

    这部分就不做演示了,可以去看下bs4的用法——> bs4使用大全

  • robobrowser的两大功能应为表单提交数据抓取,模拟登陆是表单提交中的典型例子。
  • 仅适用于表单结构明显,即源码中能看到明显form标签的网站!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章