我想要构建一个网页抓取工具,旨在捕捉图像,因为它们打算被查看。某些图像包含透明图层,因此被设计为在特定颜色或纹理背景前查看。对于这样的图像,我想截取一张截图,但是会裁剪出只是被刮掉的图像,以便以相关背景捕获图像。使用PyQt扫描Web图像
我正在看PyQt的QtWebKit模块。对于那些熟悉的人来说,这个模块能否满足我的需求?或者也许会有一个不同的库或实用程序更适合这项任务?
我想要构建一个网页抓取工具,旨在捕捉图像,因为它们打算被查看。某些图像包含透明图层,因此被设计为在特定颜色或纹理背景前查看。对于这样的图像,我想截取一张截图,但是会裁剪出只是被刮掉的图像,以便以相关背景捕获图像。使用PyQt扫描Web图像
我正在看PyQt的QtWebKit模块。对于那些熟悉的人来说,这个模块能否满足我的需求?或者也许会有一个不同的库或实用程序更适合这项任务?
我会建议看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代码中调用。
PhantomJS看起来很有趣,尽管我最好喜欢用纯Python工作。抓取具有特定属性的图像的DOM并使用PhantomJS查询大小/位置是一项简单的任务吗? – SkyRender
,而你正在使用python我建议你spynner
=)
import spynner
browser = spynner.Browser()
browser.load("http://www.wordreference.com")
browser.snapshot(....)
browser.close()
[网页图片刮痧 - 处理CSS和透明度]的
可能重复(http://stackoverflow.com/问题/ 13783957/web-image-scraping-handling-css-and-transparency) – ekhumoro