QWebview getHtml?
Code: Alles auswählen
view = QWebView()
[...]
view.page().mainFrame().toHtml()
Code: Alles auswählen
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl("http://www.python-forum.de/topic-20308.html"))
web.show()
x = open("test.html", "w")
print "debug"
x.write(web.page().mainFrame().toHtml())
print "end"
sys.exit(app.exec_())
Wie geht das denn?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Code: Alles auswählen
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
class P_MainWindow(QWebView):
def __init__(self, parent = None):
QWebView.__init__(self, parent)
self.load(QUrl("http://www.python-forum.de/topic-20308.html"))
self.connect(self, SIGNAL("loadFinished(bool)"),
self.print_html)
print "OK!"
def print_html(self):
x = open("test.html", "w")
x.write(self.page().mainFrame().toHtml())
print "OK"
app = QApplication(sys.argv)
w = P_MainWindow()
w.show()
sys.exit(app.exec_())
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Das schreibt jetzt auf doof in die Datei, ohne dass du weißt, ob der Aufruf der Seite erfolgreich war. Unter Umständen ist dein Inhalt nämlich nur `<html></html>`, da Qt sich bei einem Fehler (unbekannte Url, anderes Problem beim Laden) nicht von selbst meldet und dir einen leeren DOM-Tree zurückgibt.
Übrigens bist du nicht gezwungen, das Widget mit show() zu zeigen, denn es klappt ohne genau so. Wenn du also nur daran interessiert bist, mit der WebKit-Engine an den Seiten-Inhalt zu kommen, empfiehlt es sich vielleicht, das weg zu lassen. Beenden kann man Qt nämlich auch mit app.quit(). Das könntest du dann einfach ans Ende deines Callbacks setzen, wenn du willst.
Spätestens dann sollte man aber wohl wirklich ein bißchen was am Error-Handling machen.
Übrigens bist du nicht gezwungen, das Widget mit show() zu zeigen, denn es klappt ohne genau so. Wenn du also nur daran interessiert bist, mit der WebKit-Engine an den Seiten-Inhalt zu kommen, empfiehlt es sich vielleicht, das weg zu lassen. Beenden kann man Qt nämlich auch mit app.quit(). Das könntest du dann einfach ans Ende deines Callbacks setzen, wenn du willst.
Spätestens dann sollte man aber wohl wirklich ein bißchen was am Error-Handling machen.
@simlan: Der Sinn, WebKit in dieser Weise zu "missbrauchen", ist meist, dass man an das HTML kommen will, welches ein normaler Browser sehen würde. Und ein Browser sieht oft was anderes als die `urllib` von Python.
Deshalb lädt man die Seite einfach in einem "echten" Browser-Fenster, nur zeigt es dem Anwender nicht, falls dieser sich nur für den Seiten-Inhalt interessiert. Also zumindest wenn man das nach meinem Vorschlag macht. Wenn man innerhalb eines Programms einen Menüpunkt hat oder so, ist das natürlich was anderes. Logo.
Deshalb lädt man die Seite einfach in einem "echten" Browser-Fenster, nur zeigt es dem Anwender nicht, falls dieser sich nur für den Seiten-Inhalt interessiert. Also zumindest wenn man das nach meinem Vorschlag macht. Wenn man innerhalb eines Programms einen Menüpunkt hat oder so, ist das natürlich was anderes. Logo.
Genau darum ging es mirsnafu hat geschrieben:@simlan: Der Sinn, WebKit in dieser Weise zu "missbrauchen", ist meist, dass man an das HTML kommen will, welches ein normaler Browser sehen würde. Und ein Browser sieht oft was anderes als die `urllib` von Python.
Deshalb lädt man die Seite einfach in einem "echten" Browser-Fenster, nur zeigt es dem Anwender nicht, falls dieser sich nur für den Seiten-Inhalt interessiert. Also zumindest wenn man das nach meinem Vorschlag macht. Wenn man innerhalb eines Programms einen Menüpunkt hat oder so, ist das natürlich was anderes. Logo.

Wenn ich dann irgendwann OOP auf die Reihe kriege läuft das sicher besser.
Danke Leute

BTW: Immer Schade wenn keine aktuellen Packete in Repo der Distro sind ...immer dieses gefrikel