我希望这有帮助...
你的代码
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。我们需要知道的最后一件事是如何设置用户代理。
User Agent 是使用 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()
完毕!
最终稿
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)
我希望这对你有所帮助。我遗漏了一些东西,因为我认为你掌握了基础知识。