我想通过HTTP代理发出请求,但我不太明白如何设置它。
以下是示例代码:
如果是这样,如何让我的浏览器(QWebView)类使用MyNetworkAccessManager呢?或者我完全错了,这应该以不同的方式完成。非常感谢你的帮助。
以下是示例代码:
#! /usr/bin/env python2.7
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from bs4 import BeautifulSoup
import sys
class MySettings(QWebPage):
def __init__(self):
QWebPage.__init__(self)
self.settings().setAttribute(QWebSettings.AutoLoadImages, False)
class Browser(QWebView):
def __init__(self):
QWebView.__init__(self)
self.setPage(MySettings())
self.loadProgress.connect(self._progress)
self.loadFinished.connect(self._loadFinished)
self.doc = self.page().currentFrame()
def _progress(self, progress):
print progress
def _loadFinished(self):
html = unicode(self.doc.toHtml()).encode('utf-8')
soup = BeautifulSoup(html[1000])
print soup.prettify()
if __name__ == "__main__":
app = QApplication(sys.argv)
br = Browser()
url = QUrl('http://http://ip2location.com/')
br.load(url)
br.show()
app.exec_()
我已经了解了QNetworkAccessManager类,但是不知道应该把它放在哪里,还是像我使用QWebPage那样创建一个不同的类:
class MyNetworkAccessManager(QNetworkAccessManager):
def __init__(self):
QNetworkAccessManager.__init__(self)
proxy = QNetworkProxy('HTTP','127.0.0.1', '8080')
self.setProxy(proxy)
如果是这样,如何让我的浏览器(QWebView)类使用MyNetworkAccessManager呢?或者我完全错了,这应该以不同的方式完成。非常感谢你的帮助。
QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.HttpProxy, "proxy.example.com", 8080))
。希望对你有所帮助。 - Annie Lagang