我想要構建一個網頁抓取工具,旨在捕捉圖像,因爲它們打算被查看。某些圖像包含透明圖層,因此被設計爲在特定顏色或紋理背景前查看。對於這樣的圖像,我想截取一張截圖,但是會裁剪出只是被刮掉的圖像,以便以相關背景捕獲圖像。使用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