ghost.py 使用实例
2016-01-01 12:31
561 查看
安装
安装需要包ghost.py 及PyQt或者PySide。安装方法 :
打开cmd或者命令提示符命令窗口,输入
pip install ghost pip install pyside
当然前提是要将pip.exe 的目录 ……python\Scripts 添加到环境变量中,或者将命令提示窗的工作路径换到此目录下。
打开python GUI
输入:
Import ghost Help(ghost)
即可查看ghost 的版本
自己使用的最新版本。
实例
进入ghostp.py文件中。目录一般在 ….\Lib\site-packages\ghost使用的类包含 :Ghost Session
1 启动一个web 客户端:
打开python GUI 输入以下代码
from ghost import Ghost, Session gh = Ghost() se = Session(gh, display = True) se.open("https://www.baidu.com/")
即可看到一个打开百度首页的web客户端
代码解释:
1 导入需要使用的类 ;
3 新建Session 对象,同时传入初始化参数 ;
4 使用Session 对象打开 百度链接
查看ghost.py源码,可以看到:
Ghost类只有一个 初始化函数init(),可以输入有关log信息,以及插件(自己没用过)
Session类包含所有ghost进行操作的函数,在初始化 Session函数中,可以看到有以下参数
def __init__( self, ghost, user_agent=default_user_agent, wait_timeout=8, wait_callback=None, display=False, viewport_size=(800, 600), ignore_ssl_errors=True, plugins_enabled=False, java_enabled=False, javascript_enabled=True, download_images=True, show_scrollbars=True, exclude=None, network_access_manager_class=NetworkAccessManager, web_page_class=GhostWebPage, ):
如初始化函数上的解释参数说明:
ghost : Ghost的对象 * user_agent : 代理,作为打开网页链接时使用 * wait_timeout : 等待超时 * wait_callback : 周期性的执行, + log_level : 日志级别 log_handler : 日志处理器 display : web客户端是否显示 * viewport_size : web客户端显示的大小 * ignore_ssl_errors: 布尔类型,用于强制忽视ssl 错误 plugins_enabled: 是否启用插件,如flash java_enabled : 是否启用Java JRE download_images : 提示浏览器是否下载图片 + exclude : 一个正则表达式,用于决定哪个url,在发送请求时被执行。 +
(说明,以后后面带*的参数是自己经常使用的参数,带+号的是自己觉得可以试试给参数赋值,看看效果)
在上面的session类实例化时,初始化了ghost,display参数,当然你可以设置下viewport_size参数,
格式:viewport_size=(1000, 1000),看看与之前的效果变化。
同时也可以调用Session的函数set_viewport_size(width, height)来设置。
关于session的open函数,也可以查看下它的参数列表。此时看下body 这个参数,通过参数解释,个人认为这是发送post时的数据参数,因为在requests使用的例子中,官方教程使用payload作为post数据的变量。
2 在搜索框中输入要搜索的关键字
继续接着上一步进行操作。既然要在搜索框中输入关键字,首先是要判断哪个是输入框,然后再输入值。
查看 类Session 的函数,可以看到有两个函数可以进行输入值:
fill(selector, values) set_field_value( selector, value, blur=True)
根据解释,fill是用来填表单的,是对set_field_value的一个调用封装。参数解释:
selector:表单 css选择器 values : 表单填充内容,字典数据类型
set_field_value , 设置匹配的选择器的值。参数解释: selector: 要设置值的区域的css选择器 value : 设置的值 第三参数没用过。
继续输入以下命令:
se.set_field_value("#kw","hello world")
发现web客户端的搜索框没有输入值。
刷新一下吧。
se.show()
出来了
说明:
关于css选择器,进入http://www.w3school.com.cn/css/ ,可以看到css有:
CSS id 选择器 :id 选择器以 “#” 来定义。
CSS 类选择器,类选择器以一个点号显示 “.”
CSS 属性选择器。属性选择器以”[]”显示
CSS 派生选择器 : (没用过)
此处使用的是CSS id选择器。
3 点击搜索
既然关键字都输进去了,那进行搜索吧,正常我们在搜索时,输完关键字了,就点击搜索按钮。即查找按钮button,然后点击。
查看类Session函数:
click( selector, btn=0)
参数解释:
Selector : css3选择器,选择要点击的目标元素 btn=0: 选择鼠标键,0-左键 1-中间键(滚轮) 2-右键
先找到css selector:
<input type=submit value="百度一下" id="su" class="btn self-btn bg s_btn">
继续输入命令:
se.click("#su",btn=0) se.show()
这个出来有点慢,多刷刷。
4 等待元素出现
有时候ghost反应慢,只有等待某个标签元素出现后才能进行下一步操作(点击,填表单等),也就是要等待元素出现。
查看session中的函数:
wait_for_selector(selector, timeout=None)
参数解释:
Selector: 等待这个css selector 加载完成 Timeout : 等待多久还没出现css selector,就超时,加载css selector失败,后面的程序可能就不能对这个 css selector 进行操作了。
其他还有些等待的函数:
wait_while_selector wait_for_text wait_for_page_loaded wait_for_alert
请参考函数解释
5 模拟javascript执行
继续之前的操作,想获取百度一下按键的值,在火狐浏览器中的firebug下的控制台(console)下,可以测试自己的js语句执行的结果。
获取百度一下这个按键上的显示值(百度一下)的js语句:
document.getElementById('su').value
python GUI输入命令:
print se.evaluate("document.getElementById('su').value")
输出一个元组值,将第一个值直接print,就可以看到获取的值
对于函数
evaluate_js_file ( path, encoding='utf-8', **kwargs)
执行的是js文件
其他函数可以根据之前的分析方法,查看函数的说明,参数解释,程序源码进行理解,并尝试操作。
推荐:
selenium
个人觉得selenium好用,它直接调用firefox 或者 chrome 浏览器,语法和ghost.py 相似,功能更多(之前用了一下,现在记不清了)
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法