Das deutsche Python-Forum

10 Jahre Diskussionen rund um die Programmiersprache Python
Aktuelle Zeit: Donnerstag 27. November 2014, 13:52

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: QWebview getHtml?
BeitragVerfasst: Dienstag 22. September 2009, 15:05 
User
Benutzeravatar

Registriert: Freitag 5. Dezember 2008, 16:08
Beiträge: 385
Gibt es beim QWebview so eine Funktion die das html des Fensters printed?

_________________
ein kleines game für die die lust haben http://konaminut.mybrute.com
;-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Dienstag 22. September 2009, 15:49 
User
Benutzeravatar

Registriert: Donnerstag 21. Februar 2008, 17:31
Beiträge: 3877
Wohnort: Gelsenkirchen
  1. view = QWebView()
  2. [...]
  3. view.page().mainFrame().toHtml()
Highlighting by GeSHi

_________________
shcol (Repo | PyPi)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Dienstag 22. September 2009, 16:04 
User
Benutzeravatar

Registriert: Freitag 5. Dezember 2008, 16:08
Beiträge: 385
  1. import sys
  2. from PyQt4.QtCore import *
  3. from PyQt4.QtGui import *
  4. from PyQt4.QtWebKit import *
  5.  
  6. app = QApplication(sys.argv)
  7.  
  8. web = QWebView()
  9. web.load(QUrl("http://www.python-forum.de/topic-20308.html"))
  10. web.show()
  11. x = open("test.html", "w")
  12. print "debug"
  13. x.write(web.page().mainFrame().toHtml())
  14. print "end"
  15. sys.exit(app.exec_())
  16.  
Highlighting by GeSHi

Führt bei mir zu einer leeren datei.
Wie geht das denn?

_________________
ein kleines game für die die lust haben http://konaminut.mybrute.com
;-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Dienstag 22. September 2009, 16:21 
User
Benutzeravatar

Registriert: Donnerstag 21. Februar 2008, 17:31
Beiträge: 3877
Wohnort: Gelsenkirchen
Du musst das loadFinished()-Signal abwarten, bevor du auf den kompletten DOM-Tree zugreifen kannst. Anders gesagt: In dem Moment, wo du das toHtml() machst ist noch gar kein Inhalt da.

_________________
shcol (Repo | PyPi)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Dienstag 22. September 2009, 17:55 
User
Benutzeravatar

Registriert: Freitag 5. Dezember 2008, 16:08
Beiträge: 385
  1. import sys
  2. from PyQt4.QtCore import *
  3. from PyQt4.QtGui import *
  4. from PyQt4.QtWebKit import *
  5.  
  6.  
  7. class P_MainWindow(QWebView):
  8.     def __init__(self, parent = None):
  9.         QWebView.__init__(self, parent)
  10.  
  11.         self.load(QUrl("http://www.python-forum.de/topic-20308.html"))
  12.        
  13.         self.connect(self, SIGNAL("loadFinished(bool)"),
  14.                      self.print_html)
  15.  
  16.         print "OK!"
  17.     def print_html(self):
  18.         x = open("test.html", "w")
  19.         x.write(self.page().mainFrame().toHtml())
  20.         print "OK"
  21.  
  22. app = QApplication(sys.argv)
  23. w = P_MainWindow()
  24. w.show()
  25. sys.exit(app.exec_())
Highlighting by GeSHi

_________________
ein kleines game für die die lust haben http://konaminut.mybrute.com
;-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Dienstag 22. September 2009, 18:40 
User
Benutzeravatar

Registriert: Donnerstag 21. Februar 2008, 17:31
Beiträge: 3877
Wohnort: Gelsenkirchen
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.

_________________
shcol (Repo | PyPi)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Dienstag 22. September 2009, 18:46 
Moderator
Benutzeravatar

Registriert: Freitag 4. August 2006, 14:56
Beiträge: 6798
Wohnort: Hamburg
Nur am Rande: Sternchen-Importe sind böse *duck* ;-)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Freitag 25. September 2009, 16:28 
User

Registriert: Montag 20. April 2009, 16:41
Beiträge: 6
Kann das Webkit Widget auch Java Script ausführen? Oder ist das nur ein Aufgemotzter Html Parser?

Habe mal ne Zeit lang nach sowas gesucht,,,,


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Freitag 25. September 2009, 16:55 
User

Registriert: Montag 19. Mai 2008, 04:21
Beiträge: 1693
Wohnort: Berlin
Das Widget führt Javascript genauso wie Plug-ins z.B. für Flash aus.

_________________
A language that doesn't affect the way you think about programming, is not worth knowing. - Alan Perlis


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Freitag 25. September 2009, 17:59 
User
Benutzeravatar

Registriert: Donnerstag 21. Februar 2008, 17:31
Beiträge: 3877
Wohnort: Gelsenkirchen
@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.

_________________
shcol (Repo | PyPi)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Freitag 25. September 2009, 22:25 
User

Registriert: Montag 20. April 2009, 16:41
Beiträge: 6
snafu 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.


Genau darum ging es mir :) Hab schon viel probiert aber das scheint ne saubere Sache zu sein nicht so ein einziger Workaround wie PyGTkWebkit...
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


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Samstag 26. September 2009, 10:02 
User
Benutzeravatar

Registriert: Donnerstag 21. Februar 2008, 17:31
Beiträge: 3877
Wohnort: Gelsenkirchen
Das geht auch ohne OOP. Ich hab hier mal ganz simples Skript gemacht, das die Ausgabe ins Terminal schreibt (lauffähig ab PyQt 4.4).

_________________
shcol (Repo | PyPi)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Montag 28. September 2009, 11:23 
User

Registriert: Montag 20. April 2009, 16:41
Beiträge: 6
Schönes Beispiel Danke :D


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de