使用Spynner基于Webkit从最底层模拟浏览器行为
2013-05-10 11:49
375 查看
WebKit是开源的Web浏览器引擎,苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。WebKit 还支持移动设备和手机,包括iPhone和Android手机都是使用WebKit做为浏览器的核心。了解更多>>>
由于是直接使用浏览器引擎,所以能够访问和修改浏览器的各项底层属性,能够与其进行深度的交互。例如,可以进行代理设置、HTTP头读取和修改、Cookie读取和设置、缓存控制、URL过滤。另外,Webkit方案还能够跨平台使用。
Qt库是一个跨平台C++图形用户界面应用程序开发框架,QtWebKit是Webkit在Qt库中的封装。
PyQt4是Qt库的Python实现,我们可以直接使用PyQt4.QtWebKit来实现一个自定义功能的浏览器。
spynner是一个对PyQt4.QtWebKit 的封装库,使得QtWebKit更易于使用,该开源项目的位置在https://github.com/makinacorpus/spynner。
spynner的例子可以参考https://github.com/makinacorpus/spynner/blob/master/src/spynner/tests/spynner.rst。
Spynner is a stateful programmatic web browser module for Python. It is based upon PyQT and WebKit. It supports Javascript, AJAX, and every other technology that !WebKit is able to handle (Flash, SVG, ...). Spynner takes advantage of JQuery. a powerful Javascript library that makes the interaction with pages and event simulation really easy.
Using Spynner you would able to simulate a web browser with no GUI (though a browsing window can be opened for debugging purposes), so it may be used to implement crawlers or acceptance testing tools.
一个简单的完整例子:
由于是直接使用浏览器引擎,所以能够访问和修改浏览器的各项底层属性,能够与其进行深度的交互。例如,可以进行代理设置、HTTP头读取和修改、Cookie读取和设置、缓存控制、URL过滤。另外,Webkit方案还能够跨平台使用。
Qt库是一个跨平台C++图形用户界面应用程序开发框架,QtWebKit是Webkit在Qt库中的封装。
PyQt4是Qt库的Python实现,我们可以直接使用PyQt4.QtWebKit来实现一个自定义功能的浏览器。
spynner是一个对PyQt4.QtWebKit 的封装库,使得QtWebKit更易于使用,该开源项目的位置在https://github.com/makinacorpus/spynner。
spynner的例子可以参考https://github.com/makinacorpus/spynner/blob/master/src/spynner/tests/spynner.rst。
Spynner is a stateful programmatic web browser module for Python. It is based upon PyQT and WebKit. It supports Javascript, AJAX, and every other technology that !WebKit is able to handle (Flash, SVG, ...). Spynner takes advantage of JQuery. a powerful Javascript library that makes the interaction with pages and event simulation really easy.
Using Spynner you would able to simulate a web browser with no GUI (though a browsing window can be opened for debugging purposes), so it may be used to implement crawlers or acceptance testing tools.
一个简单的完整例子:
import spynner if __name__ == "__main__": browser = spynner.Browser() # 设置代理 #browser.set_proxy('http://host:port') browser.show() try: browser.load(url='http://duckduckgo.com', load_timeout=120, tries=1) except spynner.SpynnerTimeout: print 'Timeout.' else: # 输入搜索关键字 browser.wk_fill('input[id="search_form_input_homepage"]', 'something') # 点击搜索按钮,并等待页面加载完毕 browser.wk_click('input[id="search_button_homepage"]', wait_load=True) # 获取页面的HTML html = browser.html if html: html = html.encode('utf-8') open('search_results.html', 'w').write(html) browser.close()
相关文章推荐
- python爬虫:使用Selenium模拟浏览器行为
- 浅谈python爬虫使用Selenium模拟浏览器行为
- Java编程练习:使用分层结构,基于XML文件,实现模拟用户登录
- 谷歌将基于WebKit开发自主浏览器引擎Blink
- CSS gradient渐变之webkit核心浏览器下的使用
- 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址
- 使用QWebView实现一个简单的浏览器(QtWebKit基本使用)
- CSS gradient渐变之webkit核心浏览器下的使用
- Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
- 从零开始基于ARM 交叉编译开源浏览器webkit .
- Springmvc 基于浏览器国际化配置及使用
- CSS gradient渐变之webkit核心浏览器下的使用
- 使用HttpClient配置代理服务器模拟浏览器发送请求调用接口测试
- 不要使用浏览器嗅探,尽量使用特性检测和特性模拟
- Java语言使用HttpClient模拟浏览器登录
- CSS gradient渐变之webkit核心浏览器下的使用
- Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
- 一个基于SSL的简单浏览器(使用Swing)
- 解决webkit浏览器中js方法中使用window.event提示未定义的问题
- 浏览器端图形应用开发——使用基于XML的SVG[SVG综述]