使用selenium自动化操作浏览器

selenium借助驱动程序webdriver来驱动相应的浏览器,以最常用的谷歌和火狐浏览器为例,对应的驱动程序如下

1. chromdriver, 谷歌浏览器的驱动程序

2. geckodriver, 火狐浏览器的驱动程序

chromdriver的下载地址如下

>http://chromedriver.storage.googleapis.com/index.html

geckodriver的下载地址如下

>https://github.com/mozilla/geckodriver/releases

需要注意的,要保证驱动程序和浏览器版本的匹配,这样才可以成功驱动浏览器。

在浏览器之中,有一个特殊的浏览器,称之为无头浏览器PhantomJS, 是一个没有GUI界面的浏览器,原生支持命令行运行模式,非常实用linux服务器上的自动化。但是随着该项目没人进一步维护,以及谷歌和火狐浏览器对于无头模式,即headless模式的支持,在python的selenium模块中,更推荐使用火狐和谷歌浏览器。

下面来看下selenium操作浏览器的最基本使用方式,代码如下

>>> from selenium import webdriver
>>> browser = webdriver.PhantomJS()
>>> browser.get('https://www.baidu.com')
>>> browser.close()
上述程序通过webdriver来启动PhantomJS浏览器,然后打开了百度首页,操作完毕之后关闭了浏览器的窗口。

在爬虫程序中,通过自动化操作浏览器,来模拟真实用户的浏览操作,避开了动态资源解析的难点,使得程序的结果和我们在浏览器中获得的结果完全一致,所以selenium是爬虫的一大利器,是解决动态页面的终极武器,但是缺点也很显著,就是速度慢了很多,所以主要应用于复杂网站的资源爬取。

通过selenium模块,还可以实现以下操作

1. 定位元素,就是查找html中的特定元素

2. 操作元素,进行下拉列表的选择,文本框的输入,按钮的提交等操作

1. 定位元素

有多种方法来查找元素,对应find_element系列方法,又可以细分为查找单个元素和多个元素,区别就是多个元素对应的函数名字为find_elements。以查找单个元素为例,有以下几种方法

1. find_element_by_id

2. find_element_by_name

3. find_element_by_xpath

4. find_element_by_link_text

5. find_element_by_partial_link_text

6. find_element_by_tag_name

7. find_element_by_class_name

8. find_element_by_css_selector

2. 操作元素

常用的操作元素的方法有以下几种

1. send_keys, 填写文本框或者上传文件

2. submit, 提交表单

3. select_by_index, 选择下拉列表

4. save_screenshot, 保存网页截图

下面是一个简单的案例,通过selenium来自动化操作百度检索,关键词为python

>>> from selenium import webdriver
>>> browser = webdriver.PhantomJS()
>>> browser.get('https://www.baidu.com')
>>> browser.find_element_by_id('kw').send_keys('python')
>>> browser.find_element_by_id('su').submit()
>>> print(browser.page_source)
>>> browser.close()

通过selenium, 我们可以方便的操作浏览器,从而巧妙回避普通爬虫程序遇到的动态页面解析的难点,对于处理复杂网页而言,特别的好用。

·end·
(0)

相关推荐

  • 第69天:Selenium详解

    Selenium 环境配置好之后,我们就可以使用 Selenium 来操作浏览器,做一些我们想做的事情了.在我们爬取网页过程中,经常发现我们想要获得的数据并不能简单的通过解析 HTML 代码获取,这些 ...

  • Selenium2+python自动化69-PhantomJS使用

    前言 PhantomJS是一个没有界面的浏览器,本质上是它其实也就是一个浏览器,只是不在界面上展示. PhantomJS非常适合爬虫方面,很多玩爬虫的都喜欢用这个浏览器. 一.PhantomJS环境准 ...

  • WebDriver入门知识点

    面对DevOps的热潮来临,TestOps作为测试运维也逐步萌芽.作为测试运维中非常重要的UI自动化测试,如何有效进行,配合持续集成&持续发布,构建自动化性能体系是很多TestOps急需解决的 ...

  • selenium+python自动化91-多线程启动多个不同浏览器

    一.前言 如果想用多个浏览器跑同一套测试代码,driver=webdriver.Firefox()这里的driver就不能写死了,可以把浏览器名称参数化. 后续如果想实现多线程同时启动浏览器执行用例, ...

  • Python实现数据技术|爬虫便可获取免费百度文库付费文档

    相信大家在百度文档中看到了比较合适的文档之后就有了想下载学习一下的想法,但是有些时候文章更多的需要付费下载,针对于文档中能发现语句是分为一个一个的标签中的文本进行输出的.如果你有耐心和任劳任怨的想法, ...

  • Selenium2+python自动化71-多个浏览器之间的切换

    前言 有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数. 举个简单例子:在做某些业务的时候,需要手机短信验证码,我不可 ...

  • C# 利用Selenium实现浏览器自动化操作

    概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子 ...

  • 花了我 一个晚上整理了十个 Python 自动化操作,拿走就用

    一.遍历文件夹 代码如下,大家可以根据自己的路径进行修改 import os for dirpath, dirnames, filenames in os.walk(r'C:\\Program Fil ...

  • Selenium2+python自动化61-Chrome浏览器(chromedriver)

    前言 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrome浏览器版本号,对应的驱动文件版本号又不一样,如果版本号不匹配,是没法启动起来的. 一.Chrome遇到问题 1. ...

  • 利用 PyAutoGUI 快速构建自动化操作脚本

    一.背景 我们经常遇到需要进行大量重复操作的时候,比如网页上填表,对 web 版本 OA 进行操作,自动化测试或者给新系统首次添加数据等.这些操作的特点往往是:数据同构,大多是已经有了的结构化数据:操 ...

  • 解放双手|利用 PyAutoGUI 快速构建自动化操作脚本

    来源|本文经授权转载自早起Python 作者|大奎 一.背景 我们经常遇到需要进行大量重复操作的时候,比如网页上填表,对 web 版本 OA 进行操作,自动化测试或者给新系统首次添加数据等.这些操作的 ...

  • 快递,自动化操作管理指南

    前言 QIAN YAN 在快递行业网点公司,随着自动化设备的进步,随着环型自动化交叉带与直线双层自动化交叉带的出现,网点公司无论规模大小都有了相对灵活的选项,比如直线双层自动化交叉带,就可以按派件人员 ...

  • selenium爬虫操作网页(实战篇)

    前面我们遇到了一个爬虫难题:爬虫最怕遇到JavaScript依赖性的动态网页,选择了[在R里面配置selenium爬虫环境](),仅仅是安装和配置好了在R里面使用selenium爬虫,打开一个Java ...

  • 德国是如何杀猪的?全程自动化操作,猪还没反应过来就变成肉块了

    德国是如何杀猪的?全程自动化操作,猪还没反应过来就变成肉块了

  • 熬夜3天制作:18税种应纳税额计算模板,自动化操作,可直接套用

    [熬夜3天制作:18税种应纳税额计算模板,自动化操作,可直接套用] [文末可获取] 目录封面 十八税种应纳税额自动计算模板 增值税税率表 消费税最新税率表 个人所得税税率表 印花税税目税额表 环境保护 ...