如何在 PyQt4 中通过代理发出请求? - 我看到了答案但不确定将代码放在哪里

How to make request through proxy in PyQt4? - I saw the answer but not sure where to put the code

我基本上是在尝试使用 PyQt 废弃一个站点以便能够加载 Javascript 并且我正在尝试通过 PyQt4 中的代理执行请求。我看到它适用于提出这个已回答问题的人:How to make request through proxy in PyQt4 但我无法让它工作,我不确定在哪里添加答案中建议的信息:

old_manager = self.page().networkAccessManager()
new_manager = MyNetworkAccessManager(old_manager)
self.page().setNetworkAccessManager(new_manager)

知道如何使这段代码完整吗?

我试过类似的东西:

import sys 
import socket
import requests
from PyQt4.QtGui import *  
from PyQt4.QtCore import *  
from PyQt4.QtWebKit import *
from PyQt4.QtNetwork import *
from bs4 import BeautifulSoup

class MyNetworkAccessManager(QNetworkAccessManager):
    def __init__(self):
        QNetworkAccessManager.__init__(self)
        proxy = QNetworkProxy('HTTP','179.179.253.147', '8080') 
        self.setProxy(proxy)

class MySettings(QWebPage):
    def __init__(self):
        QWebPage.__init__(self)
        self.settings().setAttribute(QWebSettings.AutoLoadImages, False)

class Browser(QWebView):
    def __init__(self):
        QWebView.__init__(self)
        old_manager = self.page().networkAccessManager()
        new_manager = MyNetworkAccessManager(old_manager)
        self.page().setNetworkAccessManager(new_manager)
        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):
        soup = BeautifulSoup(unicode(self.doc.toHtml()), 'lxml')
        print soup.prettify().encode('utf-8')

if __name__ == "__main__":
app = QApplication(sys.argv)
br = Browser()
url = QUrl('https://www.example.com')
br.load(url)
br.show()
app.exec_()

但是 returns 是一个错误说:

"__init__() takes exactly 1 argument (2 given)" on the line new_manager = MyNetworkAccessManager(old_manager)

你不应该把老经理当作论据,你必须改变:

old_manager = self.page().networkAccessManager()
new_manager = MyNetworkAccessManager(old_manager)
self.page().setNetworkAccessManager(new_manager)

new_manager = MyNetworkAccessManager()
self.page().setNetworkAccessManager(new_manager)

同时更改:

proxy = QNetworkProxy('HTTP','179.179.253.147', '8080') 

至:

proxy = QNetworkProxy(QNetworkProxy.HttpProxy, QString("179.179.253.147"), 8080)