Python第三方库使用——splinter
功能:实现与html标签的交互,例如用编程的方式实现对页面中某一按键的点击,实现对文本框的填写。
准备
安装
pip install splinter
下载浏览器(推荐使用chrome)驱动(默认调用的是 firefox)
请点击如下网站下载与自己操作系统相匹配的驱动程序。
http://chromedriver.storage.googleapis.com/index.html?path=2.20/
基本用法
如想获得直观的演示效果,推荐使用ipython
,实现一种交互式的命令响应。
>>> from splinter.browser import Browser
获得网页的“句柄”
>>> b = Browser(driver_name='chrome')# 此时会打开chrome浏览器,# b这个Browser对象会持有后续操作的页面# 可将其理解为页面的句柄# 也即通过操纵b来实现对页面的操纵
访问某一站点
>>> url='https://www.baidu.com'
>>> b.visit(url)# 会在浏览器中打开百度首页# 是不是很神奇,通过代码的方式实现以前手动完成的事# 更神奇的还在后面
使用百度进行关键字的检索
为避免中英文编码方式的影响,这里我们统一使用页面标签的id
属性而非text
属性。
>>> b.fill('wd', 'splinter')
我们可以获得百度一下
所标示的按钮,然后通过代码的方式实现对该按钮的点击。
>>> btn = b.find_by_id('kw')
>>> btn.click()
或者连写:
>>> b.find_by_id('kw').click()
注,因为当前百度搜索填写关键字会触发搜索结果的显示,所以这项演示似乎看起来click和不click影响不大。
杂项
# 判断页面是否存在
>>> b.is_text_present('splinter.cobrateam.info')
True# 退出
>>> b.quit()
一个实例
我们通过如下简单的代码实现对12306网站的相关标签的设置(以代码的形式操纵而非手动):
登录
>>> from splinter.browser import Browser
>>> url = 'https://kyfw.12306.cn/otn/leftTicket/init'
>>> b = Browser(driver_name='chrome')
>>> b.visit(url)>>> b.find_by_id('login_user').click()# 点击登录按钮
>>> b.fill('loginUserDTO.user_name', '****@qq.com')
>>> b.fill('userDTO.password', '****')# 无奈,此时并不能通过简单的设置绕过验证码
以cookie的形式设置始发站、终点站以及日期
>>> b.cookie.all()# 显示当前cookie,并无站点实现信息
2
3
4
{u'BIGipServerotn': u'1977155850.38945.0000',u'JSESSIONID': u'0A01D97598F459F751C4AE8518DBFB300DA7001B67',u'__NRF': u'95D48FC2E0E15920BFB61C7A330FF2AE',u'current_captcha_type': u'Z'}
# 然后我们填写出发站,以下信息均需自己事先填写
>>> b.cookies.add({"_jc_save_fromStation":"%u4E0A%u6D77%2CSHH"})# 添加目的地
>>> b.cookies.add({u'_jc_save_toStation':'%u6C38%u5DDE%2CAOQ'})# 添加出发日期
>>> b.cookies.add({"_jc_save_fromDate":"2016-01-23"})# 注,如果需要对相关信息进行修改的话,调用的是add方法,这和字典的操作相兼容
>>> b.cookies.add({u'_jc_save_toStation':'xxxxxx'})
>>> b.cookies.all()
{u'BIGipServerotn': u'1977155850.38945.0000',u'JSESSIONID': u'0A01D97598F459F751C4AE8518DBFB300DA7001B67',u'__NRF': u'95D48FC2E0E15920BFB61C7A330FF2AE',u'_jc_save_fromDate': u'2016-01-20',u'_jc_save_fromStation': u'%u4E0A%u6D77%2CSHH',u'_jc_save_toStation': u'%u6C38%u5DDE%2CAOQ',u'current_captcha_type': u'Z'}
cookie准备完毕,reload然后开始查询:
>>> b.reload()
>>>
Python第三方库使用——splinter相关推荐
- Python第三方库资源
[转载]Python第三方库资源 转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github.c ...
- 4行指令解决pip下载Python第三方库太慢问题(pip更换国内下载源)
问题由来: 之前在写一篇项目博客时,pip下载Python第三方库:graphic-verification-code,实在太慢了,于是使用Python库官网下载,还是很慢,而且不断失败,下载慢且不 ...
- dos系统不能安装python模块,无法使用pip命令安装python第三方库的原因及解决方法...
再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的scripts文件夹里面.我们可以把dos切换到对应的文件夹,再使用pip命令就可以了. 如果 ...
- 查看本机中的python第三方库文档
[转载] 原文链接:https://blog.csdn.net/weixin_43936250/article/details/105251049 本机系统为win10,在使用python编程的过程中 ...
- Python_note8 程序设计方法学+Python第三方库安装+os库
实例13 体育竞技分析 自顶向下,解决复杂问题的有效方法,将一个小问题表达为若干小问题组成的形式,使用同样方法进一步解决小问题直至可以用计算机简单解决:自底向上 理解自顶向下的设计思维:分而治之:理解 ...
- 离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)
离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中) 参考文章: (1)离线安装python第三方库的实用方法:解决公 ...
- python如何离线安装第三方库_离线环境安装python第三方库
python 离线环境安装python第三方库 author: yafeishi tags: AntDB,python python对于运维工作确实方便了很多,但很多比较实用的库都是第三方提供,在os ...
- 下面不属于python第三方库的安装方法的是-关于python中第三方库安装方法和问题解决...
一.安装方法 方法一: 1.管理员身份启动命令行(运行--->cmd) 2.pip install 库的绝对路径和库的详细名称 :或者运用cd命令跳转到下载好的库所在的位置然后pip insta ...
- python中安装一个第三方库的命令格式是-无法使用pip命令安装python第三方库的彻底解决方案...
无法使用pip命令安装python第三方库的原因及解决方法 再dos中无法使用pip,命令主要是没有发现这个命令.我们先找到这个命令的位置,一般是在python里面的Scripts文件夹里面.我们可以 ...
最新文章
- 数据库服务器 之 PostgreSQL数据库的日常维护工作
- 2021春季学期-创新设计与实践-Lesson6
- R语言-文本挖掘 主题模型 文本分类
- OpenERP Web开发
- GoDaddy服务器MySQL配置文件,仅供参考
- 【Kubernetes】离线业务:Job与CronJob
- http://udacity.com 和 https://www.udemy.com 请注意区分!
- java 数据库改操作_数据库的插入、修改、删除操作(java实现)
- 如何在 Ubuntu 20.04 上安装 Java
- 170609、Nginx配置文件详细说明
- wamp修改默认80端口
- jenkins用户凭证插件的安装
- Linux设置免密登录
- H5 下载文件到本地
- [路由器] k2p支持ipv6相关设置
- 进制转化(二进制,八进制,十进制,十六进制)详细教程
- MIMO技术原理、概念、现状简介
- 学习编程是否真的有用?
- autocomplete属性在谷歌浏览器不起作用
- 作业1:C#使用委托实现信用卡用户定时还款功能
热门文章
- HBase之Rowkey设计总结与实战篇
- Scala文件内容生成本地文件
- php ajax post请求数据变形,php-在AJAX调用中读取POST数据
- matlab用dft对连续信号做谱分析,用 DFT 对连续信号进行谱分析的误差问题有哪些?...
- 机器学习代码实战——K折交叉验证(K Fold Cross Validation)
- 类和对象编程(六):内联函数
- 【压缩原理】 deflate 算法
- 推荐一些用CRF做图像语义分割的资源
- 目标检测之Selective Search原理简述(转)
- 07.计算Nova→2.nova组件详解→2.nova-scheduler