2012-12-11 57 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和透明度]的