注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 
关于我

淘尽网 http://www.tao3w.com 做最好的比价网站,做最好的数据抓取专家。

网易考拉推荐

使用Webkit实现自定义浏览器进行数据采集  

2012-12-16 23:26:17|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

前面介绍了通过控制IE浏览器进行自动化数据采集的方案。它的优点是可以避开复杂的页面加载过程(例如,Ajax,数据加密),降低了开发难度;缺点是可控性差(比如,代理设置、请求头修改、多线程都很难实现),另外该方案不能够跨平台(受限于IE,只能工作于Windows下)。

本文将介绍一种使用webkit浏览器引擎进行数据采集的方案。

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的使用示例。我们将访问http://duckduckgo.com,在页面加载完成后搜索”site-digger.com“关键字,并在搜索完成后获取搜索结果(JS动态生成的):

  1. # test.py  
  2.   
  3. import spynner  
  4.   
  5. if __name__ == "__main__":  
  6.     browser = spynner.Browser()  
  7.     # 设置代理  
  8.     #browser.set_proxy('http://host:port')  
  9.     browser.show()  
  10.     try:  
  11.         browser.load(url='http://duckduckgo.com', load_timeout=120, tries=1)  
  12.     except spynner.SpynnerTimeout:  
  13.         print 'Timeout.'  
  14.     else:  
  15.         # 输入搜索关键字  
  16.         browser.wk_fill('input[id="search_form_input_homepage"]''site-digger.com')  
  17.         # 点击搜索按钮,并等待页面加载完毕  
  18.         browser.wk_click('input[id="search_button_homepage"]', wait_load=True)  
  19.         # 获取页面的HTML  
  20.         html = browser.html  
  21.         if html:  
  22.             html = html.encode('utf-8')  
  23.             open('search_results.html''w').write(html)  
  24.     browser.close()  

 运行截图如下:

spynner更多的使用举例:https://github.com/makinacorpus/spynner/blob/master/src/spynner/tests/spynner.rst

  评论这张
 
阅读(2456)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017