2012-12-11 59 views
1

我想要构建一个网页抓取工具,旨在捕捉图像,因为它们打算被查看。某些图像包含透明图层,因此被设计为在特定颜色或纹理背景前查看。对于这样的图像,我想截取一张截图,但是会裁剪出只是被刮掉的图像,以便以相关背景捕获图像。使用PyQt扫描Web图像

我正在看PyQt的QtWebKit模块。对于那些熟悉的人来说,这个模块能否满足我的需求?或者也许会有一个不同的库或实用程序更适合这项任务?

+0

可能重复(http://stackoverflow.com/问题/ 13783957/web-image-scraping-handling-css-and-transparency) – ekhumoro

回答

1

我会建议看PhantomJS(http://phantomjs.org/)。我想象的工作流程是使用phantomjs来捕捉整个页面,以及捕获图像位置和大小的数据。然后使用PIL(甚至只是GraphicsMagick)将捕捉页面裁剪到该图像。

PhantomJS在javascript中编程,但您只需要几行JS代码来加载页面,在其中查找图像以查询大小和位置并捕捉捕捉。

编辑(回复评论):当然。您可以使用jQuery或您选择的其他工具。这里是phantomjs打开一个页面,并得到一个图像的尺寸/位置在页面的简单的例子:

var page = require('webpage').create(); 
page.open(URL, function(status) { 
    var img_attr = page.evaluate(function(){ 
      var el = $("img#SpecialID"); 
      var result = el.offset(); // Returns top, left 
      result.width = el.width(); 
      result.height = el.height(); 
      return result; 
     }); 
    console.log(img_attr); //Obviously, you'd want to write that to disk instead 
    page.render(OUTPUT_FILE); 
    }); 

所以,如果你解决了的console.log写一个记录到磁盘,并添加URL和OUTPUT_FILE的命令行选项,以及可能的错误处理,并且您将有一个方便的工具可以从您的Python代码中调用。

+0

PhantomJS看起来很有趣,尽管我最好喜欢用纯Python工作。抓取具有特定属性的图像的DOM并使用PhantomJS查询大小/位置是一项简单的任务吗? – SkyRender

1

,而你正在使用我建议你spynner =)

import spynner 

browser = spynner.Browser() 
browser.load("http://www.wordreference.com") 
browser.snapshot(....) 
browser.close() 

https://github.com/makinacorpus/spynner

[网页图片刮痧 - 处理CSS和透明度]的