2011-03-10 137 views
5

我運行的Python 3.1,你會打電話給我一種先進的新手:)網站圖像

我的問題很簡單:我想作一個簡單的程序,它要求用戶的URL(或多個URL),然後進入網站並截取(整個頁面的截圖,而不僅僅是在瀏覽器中可以看到的,而不是一直滾動的)。

所以,很簡單,然後它的聲音,我想在Web上使用的現有平臺,與此類似:

import subprocess 
MYFILENAME = "google_screen" 
MYURL = "www.google.com" 
subprocess.Popen(['wget', '-O', MYFILENAME+'.png', 'http://images.websnapr.com/?url='+MYURL+'&size=s&nocache=82']).wait() 

雖然這個網站不工作:(,我想知道是否有可能做它this website如果是的話,怎麼辦?如果它是不可能的,有什麼辦法?

回答

3

有一個名爲webkit2png的包,可以用於此目的,其位於:here

更多信息this blog post

從博客文章示例(複製到SO保全,閱讀博客文章,瞭解它,如果你有問題):

#!/usr/bin/env python 
import sys 
import signal 

from PyQt4.QtCore import * 
from PyQt 4.QtGui import * 
from PyQt4.QtWebKit import QWebPage 

def onLoadFinished(result): 
    if not result: 
     print "Request failed" 
     sys.exit(1) 

    # Set the size of the (virtual) browser window 
    webpage.setViewportSize(webpage.mainFrame().contentsSize()) 

    # Paint this frame into an image 
    image = QImage(webpage.viewportSize(), QImage.Format_ARGB32) 
    painter = QPainter(image) 
    webpage.mainFrame().render(painter) 
    painter.end() 
    image.save("output2.png") 
    sys.exit(0) 


app = QApplication(sys.argv) 
signal.signal(signal.SIGINT, signal.SIG_DFL) 

webpage = QWebPage() 
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished) 
webpage.mainFrame().load(QUrl("http://www.google.com")) 

sys.exit(app.exec_()) 

編輯: Link to the pyqt4 download page

+0

謝謝,但我得到的錯誤'從PyQt4.QtCore導入* ImportError:沒有名爲PyQt4.QtCore模塊。我已經將「webkit2png.py」安裝到python31/lib中了嗎?我需要什麼嗎? O並且非常感謝soooo的迴應 – Alex 2011-03-11 07:45:29

+0

你可能沒有安裝pyqt4軟件包,這裏是一個鏈接:http://www.riverbankcomputing.co.uk/software/pyqt/download(並加入爲第一個答案時間人們跳過評論) – sclarson 2011-03-13 15:12:30

+0

非常感謝,你知道如何編輯它等待Flash加載的時間,例如信號( 「LoadFinished(布爾)」)。我試圖加載谷歌的財務,但我認爲它認爲閃存仍在加載,而其剛剛被充分編輯。 thx – Alex 2011-03-13 16:59:10

0

您可以用Selenium得到的截圖,但它只會是什麼是瀏覽器中查看。