所以我试图使用python脚本截取网站的截图:
#! /usr/bin/python
import sys
import time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
class Screenshot(QWebView):
def __init__(self):
self.app = QApplication(sys.argv)
QWebView.__init__(self)
self._loaded = False
self.loadFinished.connect(self._loadFinished)
def capture(self, url, output_file):
self.load(QUrl(url))
self.wait_load()
time.sleep(120)
# set to webpage size
frame = self.page().mainFrame()
self.page().setViewportSize(frame.contentsSize())
# render image
image = QImage(self.page().viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
frame.render(painter)
painter.end()
# print 'saving', output_file
image.save(output_file)
def wait_load(self, delay=0):
# process app events until page loaded
while not self._loaded:
self.app.processEvents()
time.sleep(delay)
self._loaded = False
def _loadFinished(self, result):
self._loaded = True
s = Screenshot()
s.capture('http://csgo-stats.com/maschs/', 'csgo-stats.png')
它几乎适用于所有页面,但在网站csgo-stats.com/maschs(这是我的个人资料页面)上,它只会产生一个没有页面信息的空白页面。当我在浏览器中打开页面时,需要几秒钟才能加载并正确显示所有内容。结果如下所示:
我正在使用Raspberry Pi和Python 2.7
答案 0 :(得分:0)
当您的浏览器界面认为所有内容已经确定并且所有初始Javascript代码都已运行时,它可能会触发“已加载页面”事件。
您尝试捕获的页面可能会根据加载时发出的异步请求使用其他数据填充内容。
您必须弄清楚如何等待足够的事件和状态,或者只是盲目地等待,直到您认为它已经充分更新。