浏览器自动化操作(Web Browser Automation)(一)
前言:之前靠网上的大佬带,学了一点也算是爬虫的一个东西——浏览器自动化,现在算是整理总结或者是回报社会吧x
准备:① Python 3.6
② selenium库
③ google chrome driver (感谢 https://blog.csdn.net/dreamstone_xiaoqw/article/details/78970616 的分享,我当时在官网下超慢)
装好这两个东西就可以开始我们的爬虫之旅了,下面以从12306网站抓取车次信息为案例学习这个库。
浏览器自动化操作大体分为两步——定位和操作,而其中最重要的是定位,因为定位是最困难的并且只有定位到了想要的位置才能进行后续的操作。
首先,我们要打开一个浏览器并访问12306网站——http://www.12306.cn/
from selenium import webdriver
x=webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
#这是我的chromedriver的绝对路径,我是默认安装的,所以可以作为新手的参考
x.get('http://www.12306.cn/')
运行这段代码可以看到弹出了一个chrome浏览器,并跳转到了12306的主页上。因为我们想抓取车次信息,所以我们首先要进去那个车次信息的页面,所以我希望能点击一下那个【余票查询】——这句话包含了两层含义:①定位到【余票查询】②点击。
实际上网页一般是用html语言编写的,所以所有东西都是一句或一段的代码,我们需要一个规则,让我们找到那个地方。幸运的是,我们只要检查一下那个位置即可知道哪里的代码是什么。
然后在右边可以看到它的html代码。
可以看到它有一个class属性,且属性为class='k4',所以我们首先学习第一个定位函数find_element_by_class_name
left = x.find_element_by_class_name('k4')
要注意的是,定位时一定要注意规则是否唯一指向,否则定位到的可能不是自己想要的。
这个时候就定位到了【余票查询】的位置了,然后再进行操作——点击,
left.click()
于是就弹到了【余票查询】中来了。
其实还有另外一个函数find_elements_by_class_name,注意到其实这里就多了一个s,所以它返回的并不是一个WebElement,而是一个WebElement的列表,即使列表中只有一个WebElement元素。
恭喜你,我们现在已经会写第一个浏览器自动化操作——所谓爬虫了。
其实定位和操作的方法还有很多,回到刚才的位置(手动叉掉新弹出来的窗口就行,至于为什么没有影响,我们下次再说),我们用其他方法来定位。
从这里我们能看到html代码中还有许多不同的属性比如id、href等,并且html代码呈很明显的层次结构,所以下面介绍一个万能定位函数find_element_by_xpath(或find_elements_by_xpath)。
left = x.find_elements_by_xpath('//div[@id="indexLeftBL"]/ul/li')[5]
# 因为它在第6个li
left.click()
另外,所有定位函数都是可以接在其他定位函数(和自己)后面继续定位的,例如
left = x.find_element_by_id('indexLeftBL').find_elements_by_xpath('ul/li')[5]
# 注意这里不能再像之前那样/或//了
left.click()
定位函数还有:
x.find_element_by_css_selector()
x.find_element_by_link_text()
x.find_element_by_name()
x.find_element_by_partial_link_text()
x.find_element_by_tag_name()
以及它们的find_elements_by_x函数。
常用的操作还有:
.text # 取文本
其他更多更详细的可以直接啃源码或者查看selenium的技术文档,多练练自然就懂了。
如有疑问或建议,可以联系邮箱 jason_coldog@163.com
浏览器自动化操作(Web Browser Automation)(一)相关推荐
- c++浏览器自动化操作_精:C# 利用Selenium实现浏览器自动化操作
概述 Selenium是一款免费的分布式的自动化测试工具,支持多种开发语言,无论是C. java.ruby.python.或是C# ,你都可以通过selenium完成自动化测试.本文以一个简单的小例子 ...
- 11-selenium浏览器自动化
selenium - 概念: Selenium 是一个 Web 应用的自动化框架 自动化:通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面. 比如点击界面按钮,在文本框中输入文字 等操 ...
- python 浏览器自动化_Python利用splinter实现浏览器自动化操作方法
利用Splinter开发浏览器自动化操作,编写代码比较简单. 案例一: from splinter import Browser with Browser() as browser: # Visit ...
- 关于web自动化操作的分析和基类的实现
关于HTTP协议 http协议是一种无状态协议.这是首先要明确的,客户端(client)发送一个请求,服务端(server)收到之后,根据请求的URL和HTTP头信息,给出相应的答案.505,404, ...
- Atitit.web的自动化操作与信息抓取 attilax总结
Atitit.web的自动化操作与信息抓取 attilax总结 1. Web操作自动化工具,可以简单的划分为2大派系: 1.录制回放 2.手工编写0 U' z; D! s2 d/ Q! ^1 2. 常 ...
- 使用selenium自动化操作浏览器
欢迎关注"生信修炼手册"! selenium是一个浏览器自动测试工具,通过驱动程序来自动化操作对应的浏览器,包括了打开浏览器窗口,定位元素,点击按钮,上传文件等操作,支持以下多款主 ...
- PB Microsoft web browser 指定IE浏览器
PB9 Microsoft web browser 默认是使用IE7内核,不支持H5,并且IE7都是淘汰的版本,兼容性很差,如果需要在PB9 嵌入H5,可以通过修改注册表指定PB9程序Microso ...
- Java自动化(操作浏览器)
Window下环境配置 第一步:下载最新的chrome浏览器版本 第二步:查看版本 下载对应版本的ChromeDriver或下载对应版本的ChromeDrive 第三步:将下载好的ChromeDri ...
- selenium~初识自动化测试之元素的定位、对象的操作、浏览器的操作、键盘事件、鼠标事件
文章目录 准备工作 元素定位 操作测试对象 鼠标点击与键盘输入 智能等待.submit提交表单.获得text文本元素 打印title和url 浏览器的操作 键盘事件 鼠标事件 准备工作 最好安装好火狐 ...
- [转载] 使用selenium_一日一技:使用Selenium的浏览器自动化
参考链接: 使用Selenium的浏览器自动化 Selenium是用于通过程序控制Web浏览器的强大工具. 它适用于所有浏览器,可在所有主要操作系统上运行,并且其脚本以各种语言(即Python,Jav ...
最新文章
- 引进研究生:​50万房补+年薪13万起;本科生30万房补​
- 先来先服务算法代码_程序员算法与数据结构基础中的基础,栈与递归
- 引领潮流云电视机遇与挑战并现
- Java注释@interface的用法【转】
- [云炬python3玩转机器学习笔记] 3-2 Jupter Notebook魔法命令
- 《程序员面试金典》合法括号判断
- PHP+Mysql高仿百度知道签到源码演示与下载
- 一个关于微服务架构和monolithic架构的讨论
- 仅需一个参数就可搞定OneProxy的VIP机制
- java createcustomcursor,CustomCursor插件:自定义你的鼠标光标
- Intel 45 纳米处理器加速VMware虚拟架构普及
- C语言题目:5-7 购物(二) (25 分)
- Zynq-Linux移植学习笔记之47-PL部分spi flash文件系统挂载
- 使用计算机软件签什么合同,软件使用许可有哪些种类,签软件使用许可合同注意事项...
- 暑假计算机教育培训总结,暑假信息技术培训心得
- 腾讯无限法则有几个服务器,腾讯《无限法则》亚服即将开测!PC配置需求公布,竟无官方中文!...
- QT教程—1.1Qt入门
- 深入理解LayoutInflater.inflate()
- OV强推性价比手机,小米或成最大受害者
- kaldi 的安装和thchs30语音识别测试
热门文章
- 智能蓝牙音箱方案的四大问题
- vnc4server安装路径_redhat6.9VNC安装目录和注意项
- java使用egl_EGL 学习
- 计算机网络说明文,《Wi-Fi》初中说明文阅读题及答案
- 超市进销存管理系统(C#+SQL Server实现)C#窗体应用、数据库应用,生成可执行安装包程序
- 大一微积分笔记整理_大一下总结
- php支付宝App支付生成预支付订单(统一下单接口)
- 用切片实现一个简陋的Map
- 趣味数学--用1到9这九个数组成一个四位数乘以一位数等于四位数的等式,每个数只能用一次
- 关于将数据写入文件的两个函数fwrite()与fprintf()的大不同 —————— 开开开山怪