安装

安装需要包ghost.py 及PyQt或者PySide。
安装方法 :
打开cmd或者命令提示符命令窗口,输入

 pip install ghostpip 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, Sessiongh = 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 相似,功能更多(之前用了一下,现在记不清了)

ghost.py 使用实例相关推荐

  1. 爬虫采集-基于webkit核心的客户端Ghost.py [爬虫实例]

    对与要时不时要抓取页面的我们来说,是痛苦的~ 由于目前的Web开发中AJAX.Javascript.CSS的大量使用,一些网站上的重要数据是由Ajax或Javascript动态生成的,并不能直接通过解 ...

  2. python ghost.py使用笔记

    ghost.py目前已更新到0.2版本,变化有点大,使用方法上跟0.1还是有点差别的,本文仅以0.1.1版本为例,因为我安装的是这个版本 我用ghost主要用来模拟在网站上的操作,比如登录之类的,当然 ...

  3. gh ost mysql_MySQL在线DDL gh-ost 使用说明

    3)使用说明:条件是操作的MySQL上需要的binlog模式是ROW.如果在一个从上测试也必须是ROW模式,还要开启log_slave_updates.根据上面的参数说明按照需求进行调整. 环境:主库 ...

  4. mysql ddl脚本_MySQL在线DDL gh-ost使用总结

    背景: 作为一个DBA,大表的DDL的变更大部分都是使用Percona的pt-online-schema-change,本文说明下另一种工具gh-ost的使用:不依赖于触发器,是因为他是通过模拟从库, ...

  5. MySQL在线DDL gh-ost 使用说明

    https://my.oschina.net/u/3765527/blog/3037243 https://www.cnblogs.com/zhoujinyi/p/9187421.html delet ...

  6. mysql gh 划线_MySQL在线DDL gh-ost 使用说明

    3)使用说明:条件是操作的MySQL上需要的binlog模式是ROW.如果在一个从上测试也必须是ROW模式,还要开启log_slave_updates.根据上面的参数说明按照需求进行调整. 环境:主库 ...

  7. 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用

    文章目录 前言 正文 .py源文件 实例现象 运行原理 前言 相信大部分开发者对于"程序入口"这个概念并不陌生.对于很多编程语言来说,程序都必须要有一个入口,比如既保留C语言面向过 ...

  8. python打开setting_Django自带日志 settings.py文件配置方法

    Django settings.py文件配置部分: # logging配置 log_file = '/home/nagain/learn/log' log_file_path = os.path.jo ...

  9. 【python】setup.py的作用

    简而言之,setup.py是python模块分发与安装的指导文件 有了setup.py文件,运行下面这条命令,可以进行模块的安装. python setup.py install 下面给出setup. ...

  10. Ghost高级教程——克隆备份

    http://blog.csdn.net/guanchanghui/article/details/1557253  制作U盘老毛桃PE系统,进入系统后使用GHOST克隆. Ghost教程 我们能用做 ...

最新文章

  1. 初学Portal的基本概念
  2. 软件工程概论 课堂练习 第2次作业5【顺序图思考题——绘制手机拨号顺序图】
  3. libco协程库源码解读
  4. 阿里云发布ECS磁盘加密,一键加密,业务0改动 1
  5. coreboot学习7:ramstage阶段之设备枚举流程
  6. 题目1057:众数----------------------位置,位置-------------如何控制while的循环条件,先输入一个数,再在while里面输入其他的19个数...
  7. python 数据格式转换_python常用数据格式转换
  8. windows安装使用SQLlite并在C#调用SQLlite开发
  9. MySQL(14) 数据库优化方案
  10. 集成电路模拟版图入门-版图基础学习笔记(六)
  11. 云计算决策指南:解析医疗的7大解决方案
  12. html调色板快捷键,12款web前端最佳调色板工具
  13. 利用Python破解隔壁老王家的WiFi密码,学习到了!
  14. Linux那些事儿 之 我是PCI(1)PCI,我们来了
  15. Spring Cloud的基本认识和使用Spring Cloud的基本教程
  16. 使用 Hyper-V 安装 Linux
  17. The server time zone value ‘‘ is unrecognized or represents more than one time zone
  18. 2021-05-03
  19. 关于龙卷风你应该知道的五件事
  20. IEEE 802.15.4的信道接入机制二信标网络中的CSMA-CA算法

热门文章

  1. SSH和SSM对比(学完后的总结)
  2. STM32软件IIC速度
  3. html中的分页条怎么写,html如何制作分页
  4. 软件测试岗简历模板制作指南
  5. 西门子S7-1200系列PLC Modbus通信的踩坑记录
  6. 基于新浪微博api的微博分享功能实现
  7. 安卓抖音怎么切换国际版Tiktok自带无水印下载
  8. 三子棋 小游戏 C++
  9. autojs颜色渐变效果
  10. 正确将博客网页保存为pdf