Miałem wrażenie, że za pomocą przeglądarki bez nagłówka przeglądarki internetowej za pomocą PyQT automatycznie otrzymam kod html dla każdego adresu URL nawet z ciężkim kodem JS. Ale widzę to tylko częściowo. Porównuję to ze stroną, którą otrzymuję, kiedy zapisuję stronę z okna firefoxa.Strona HTML znacznie się różniła, gdy używano implementacji bezgłowego webkita przy użyciu PyQT
Używam następujący kod -
class JabbaWebkit(QWebPage):
# 'html' is a class variable
def __init__(self, url, wait, app, parent=None):
super(JabbaWebkit, self).__init__(parent)
JabbaWebkit.html = ''
if wait:
QTimer.singleShot(wait * SEC, app.quit)
else:
self.loadFinished.connect(app.quit)
self.mainFrame().load(QUrl(url))
def save(self):
JabbaWebkit.html = self.mainFrame().toHtml()
def userAgentForUrl(self, url):
return USER_AGENT
def get_page(url, wait=None):
# here is the trick how to call it several times
app = QApplication.instance() # checks if QApplication already exists
if not app: # create QApplication if it doesnt exist
app = QApplication(sys.argv)
#
form = JabbaWebkit(url, wait, app)
app.aboutToQuit.connect(form.save)
app.exec_()
return JabbaWebkit.html
Czy ktoś zobaczyć coś oczywiście złego kodu?
Po uruchomieniu kodu przez kilka adresów URL, tutaj jest jeden znalazłem, który pokazuje problemy używam do dość wyraźnie - http://www.chilis.com/EN/Pages/menu.aspx
Dzięki za wszelkie wskazówki.
użytku phantom.js. To jest najlepsze dla tego rodzaju pracy. – BigSack