複数のWebページをレンダリングしてスクリーンショットを撮ろうとしていますが、1つのWebページをレンダリングする場合にのみ機能させることができます。これは、複数のWebページを試してみると、プログラムがトラックで停止して永久にハングするか、何もしないためです。画像、cssを使用して、サイトのテキストを抽出し、1つの長いテキストブロックに配置します。通常、何が起こっているのかはハングします。
私がメモリ内のウェブページをレンダリングするために使用しているコードはこれです:
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
# Settings
s = self.settings()
#s.setAttribute(QWebSettings.AutoLoadImages, False)
s.setAttribute(QWebSettings.JavascriptCanOpenWindows, False)
s.setAttribute(QWebSettings.PluginsEnabled, True)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
#self.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)
self.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
size = self.frame.contentsSize()
size.setWidth(1366)
self.setViewportSize(size)
self.app.quit()
そして、これが私が画像を保存する方法です:
def run(url):
os.chdir("output")
r = Render(url)
image = QImage(r.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
r.frame.render(painter)
painter.end()
fp = "%s.png" % os_safe_name(url)
image.save(fp)
os.chdir("..")
なぜこれが起こっているのか誰もが知っていますか?