【发布时间】:2017-05-21 09:27:21
【问题描述】:
我基本上是在尝试使用 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_()
但是返回一个错误说:
"
__init__()正好接受 1 个参数(给定 2 个)" 就行 new_manager = MyNetworkAccessManager(old_manager)
【问题讨论】: