Python 在QWebView中设置useragent
我有一个QWebView,它工作得很好。然后,使用来自spynner的代码,尝试将useragent方法绑定到自定义方法。这似乎在spynner(带有QWebPage)中起作用,但在这里不起作用。非常感谢您的帮助。代码: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.
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)