Python 在QWebView中设置useragent

Python 在QWebView中设置useragent,python,pyqt4,qwebview,qwebpage,Python,Pyqt4,Qwebview,Qwebpage,我有一个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.

我有一个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/'))
我希望这有助于

您的代码

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时,正好使用了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.QtWebKit import * # Import all from QtWebKit
好的,现在让我们一起来。我们知道QUrl是一个QNetworkRequest()对象,我们可以使用QNetworkRequest指定url。我们需要知道的最后一件事是如何设置用户代理

用户代理是使用QNetworkRequest的setRawHeader(string,string)方法设置的

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)
我希望这对你有帮助。我遗漏了一些东西,因为我认为你已经掌握了基本原理

见:
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)