JavaScript駆動型のWebページをPYQT4で削減する - 認証が必要なページにアクセスする方法は?
-
27-10-2019 - |
質問
内部プロセスのいずれかを自動化するために、当社のイントラネットの非常にシンプルなページをこする必要があります(成功したかどうかにかかわらず、関数の出力を返す)。
次の例を見つけました:
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://sitescraper.net'
r = Render(url)
html = r.frame.toHtml()
から http://blog.sitescraper.net/2010/06/scraping-javascript-webpages-in-python.html そして、それはほとんど完璧です。ページを表示するために認証を提供できる必要があります。
私はPyqt4のドキュメントを調べてきましたが、その多くが私の頭の上にあることを認めています。誰かが助けることができれば、私はそれを感謝します。
編集:残念ながら、Gruszczyの方法は私にはうまくいきませんでした。 urllib2を介して似たようなことをしたとき、私は次のコードを使用しました...それは機能しました...
username = 'user'
password = 'pass'
req = urllib2.Request(url)
base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authheader = "Basic %s" % base64string
req.add_header("Authorization", authheader)
handle = urllib2.urlopen(req)
解決
私はそれを考え出した。これが私が他の誰かを助けることができる場合に私が終わったことです。
#!/usr/bin/python
# -*- coding: latin-1 -*-
import sys
import base64
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from PyQt4 import QtNetwork
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
username = 'username'
password = 'password'
base64string = base64.encodestring('%s:%s' % (username, password))[:-1]
authheader = "Basic %s" % base64string
headerKey = QByteArray("Authorization")
headerValue = QByteArray(authheader)
url = QUrl(url)
req = QtNetwork.QNetworkRequest()
req.setRawHeader(headerKey, headerValue)
req.setUrl(url)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(req)
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
def main():
url = 'http://www.google.com'
r = Render(url)
html = r.frame.toHtml()
他のヒント
これを試して:
url = QUrl(url)
url.setUserName(username)
url.setPassword(password)
self.mainFrame().load(url)
所属していません StackOverflow