splinter的简单使用(python3 windows)

splinter的简单使用(python3)

splinter是基于selenium的上层应用API,它可以模拟浏览器的操作,比如说填充、选择、点击等,使用时甚至可以像看电影一般看到浏览器一步一步的自动操作。当时,速度较慢,毕竟是模拟鼠标键盘操作。

使用requests或者说urllib进行爬取网站信息时,有时候我们可能得进行各种分析,比较繁琐。splinter提供了一种比较傻瓜化的方式,还原我们在浏览器上的一步一步操作,那么不管是登录还是提交一般数据,都显得比较不伤脑筋。如果说前者是R语言,那么后者就是SPSS。

splinter的安装

不管是使用pip install 或者是安装了Anaconda使用conda install,对于python包的安装,我们首先都可以尝试在命令行进行安装,如果包源尚未可行,我们可以选择手动安装。
手动安装可以从https://pypi.python.org/pypi/splinter/下载安装包解压,cmd切换到设置文件所在目录下,使用python setup.py install进行安装。
安装的同时,往往将底层的依赖selenium给安装上了。

WebDriver下载

我们可以从http://splinter.readthedocs.io/en/latest/#drivers下载安装对应浏览器的Web驱动,谷歌也行,火狐也罢。下载后,是一个exe文件,直接放到一个已添加到环境变量的路径下。

最为基本的一些使用

from splinter import Browser
b = Browser("firefox")#实例化
url = "http://www.baidu.com"
b.visit(url)#浏览器访问


b.fill('搜索框id', '搜索内容')#搜索框填充
b.find_by_id('按钮id').click()#通过id寻找按钮,并点击。当然也可以通过其他属性查找,如name、value、text等
b.select('下拉框name','下拉框的value')#下拉框选择,后面一个是value并不是内容
b.is_text_present('字段检测值')#检测当前页面是否含有 字段检测值
b.is_text_not_present('字段检测值')
b.cookies.all()#显示cookie
b.cookies.add({'字段':'值'})#添加(修改)cookie项目
b.reload()#重新加载
b.quit()#关闭
b.html#当前网页,下面就可以接着用Beautifulsoup等

动手去尝试一下,再顾名思义地想想,基本就能了解,不需要看太多别人写的博客什么的,都差不多。
用好浏览器的“检查”(“查看元素”)功能,基本上空间的id、value、name以及其他属性字段都是可以很清楚地看到的。

参考链接

所有学习,遇到其实查阅官方文档是最好的。可能很多时候,你百度来百度去,看了很多别人的东西,去解决你的问题,但是还是不能解决。事实上,看看官方文档,基本上都能在短时间找到你问题的答案。

例子:12306

这其实是一个鸡肋。因为12306的验证码太过奇葩,似乎很难绕过。

每当你以为自己耗尽了运气
赢得了网速,避过了黄牛
在一年一度的春运抢票盛会上拔得头筹时
结果却总是败给了验证码
这里写图片描述

放下验证码不提,你最多只能做一个监视,比如说监控火车票余量,当有票源时,发个邮件或者微信消息给自己。问题是,算上软件12306抢票的人头数的变动,该是以毫秒为计时的,等你收到消息,再手动登录买票,估计黄花菜都凉了。所以,这个事情本身也就没什么意思,也放一段代码,当理解splinter的使用。

from splinter.browser import Browser
b = Browser(driver_name="firefox")
url = "https://kyfw.12306.cn/otn/leftTicket/init"
b.visit(url)
b.cookies.add({"_jc_save_fromDate":"2018-03-03"})
b.cookies.add({"_jc_save_fromStation":"%u5317%u4EAC%2CBJP"})
b.cookies.add({"_jc_save_toStation":"%u6CF0%u5B89%2CTMK"})
b.reload()
b.find_by_id('query_ticket').click()
result = b.html

12306的查询要用到cookie,较为方便。

猜你喜欢

转载自blog.csdn.net/lusongno1/article/details/79393840
今日推荐