我有一个QWebView,工作正常.然后,使用spynner中的代码,我尝试将useragent方法绑定到自定义方法.这似乎适用于spynner(使用QWebPage),但不在此处.任何帮助非常感谢.码:
def customuseragent(url): print 'called for %s' % url return 'custom ua' #inside a class self.webkit = QtWebKit.QWebView() self.webkit.page().userAgentForUrl = customuseragent self.webkit.load(QtCore.QUrl('http://www.whatsmyuseragent.com/'))
mechimdi.. 6
我希望这有帮助...
你的守则
def customuseragent(url): print 'called for %s' % url return 'custom ua' #inside a class self.webkit = QtWebKit.QWebView() self.webkit.page().userAgentForUrl = customuseragent self.webkit.load(QtCore.QUrl('http://www.whatsmyuseragent.com/'))
先决条件依赖项
from PyQt4.QtWebKit import * # Import all from QtWebKit
前一个指令允许继承使用QtWebKit.QWebKit()对象及其方法.但是,您缺少一个允许您指定用户代理("Web浏览器")的组件.请注意,上面我写了QWebView.load方法的签名
QWebView.load(QNetworkRequest var) # Where var is a variable object of QNetworkRequest
只是碰巧你在打电话时使用QNetworkRequest
QtCore.QUrl('http://www.whatsmyuseragent.com/')
因此从技术上讲,上述行与以下内容相同:
self.request = QNetworkRequest() self.request.setUrl(QUrl(url))
要包含上述行,您需要导入:
from PyQt4.QtNetwork import * # Just import all to be lazy
要么
from PyQt4.QtNetwork import QNetworkRequest # This is actually the origin of QNetworkRequest
将点连接
好吧,让我们把它们全部拉到一起吧.我们知道QUrl是一个QNetworkRequest()对象,我们可以使用QNetworkRequest指定url.我们需要知道的最后一件事是如何设置用户代理.
用户代理是使用setRawHeader(string,string)设置的QNetworkRequest方法
self.request.setRawHeader("User-Agent","You/desired/user/agent") self.request.load(self.request) #load the QNetworkRequest object variable to .load()
DONE!
最终稿
from PyQt4.QtWebKit import * from PyQt4.QtNetwork import * USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1" def customuseragent(url): print 'called for %s' % url return 'custom ua' #inside a class # class WebRequest(QWebView) ## the definition of the class uncomment to make use of the inheritance. ## from this tutorial self.request = QNetworkRequest() self.request.setUrl(QUrl(url)) self.request.setRawHeader("User-Agent",USER_AGENT) ## modified version of the original design self.webkit = QtWebKit.QWebView() self.webkit.page().userAgentForUrl = customuseragent self.webkit.load(self.request)
我希望这对你有所帮助.我遗漏了一些东西,因为我觉得你得到了基础知识.
我希望这有帮助...
你的守则
def customuseragent(url): print 'called for %s' % url return 'custom ua' #inside a class self.webkit = QtWebKit.QWebView() self.webkit.page().userAgentForUrl = customuseragent self.webkit.load(QtCore.QUrl('http://www.whatsmyuseragent.com/'))
先决条件依赖项
from PyQt4.QtWebKit import * # Import all from QtWebKit
前一个指令允许继承使用QtWebKit.QWebKit()对象及其方法.但是,您缺少一个允许您指定用户代理("Web浏览器")的组件.请注意,上面我写了QWebView.load方法的签名
QWebView.load(QNetworkRequest var) # Where var is a variable object of QNetworkRequest
只是碰巧你在打电话时使用QNetworkRequest
QtCore.QUrl('http://www.whatsmyuseragent.com/')
因此从技术上讲,上述行与以下内容相同:
self.request = QNetworkRequest() self.request.setUrl(QUrl(url))
要包含上述行,您需要导入:
from PyQt4.QtNetwork import * # Just import all to be lazy
要么
from PyQt4.QtNetwork import QNetworkRequest # This is actually the origin of QNetworkRequest
将点连接
好吧,让我们把它们全部拉到一起吧.我们知道QUrl是一个QNetworkRequest()对象,我们可以使用QNetworkRequest指定url.我们需要知道的最后一件事是如何设置用户代理.
用户代理是使用setRawHeader(string,string)设置的QNetworkRequest方法
self.request.setRawHeader("User-Agent","You/desired/user/agent") self.request.load(self.request) #load the QNetworkRequest object variable to .load()
DONE!
最终稿
from PyQt4.QtWebKit import * from PyQt4.QtNetwork import * USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:15.0) Gecko/20100101 Firefox/15.0.1" def customuseragent(url): print 'called for %s' % url return 'custom ua' #inside a class # class WebRequest(QWebView) ## the definition of the class uncomment to make use of the inheritance. ## from this tutorial self.request = QNetworkRequest() self.request.setUrl(QUrl(url)) self.request.setRawHeader("User-Agent",USER_AGENT) ## modified version of the original design self.webkit = QtWebKit.QWebView() self.webkit.page().userAgentForUrl = customuseragent self.webkit.load(self.request)
我希望这对你有所帮助.我遗漏了一些东西,因为我觉得你得到了基础知识.