【问题标题】:How to make request through proxy in PyQt4如何通过 PyQt4 中的代理发出请求
【发布时间】:2012-12-15 23:49:12
【问题描述】:

我想通过 HTTP 代理发出请求,问题是我真的不明白如何设置它。

这是一个示例代码:

#! /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)

如果是这样,如何让我的 Browser(QWebView) 类使用 MyNetworkAccessManager,

或者可能是我完全错了,应该以不同的方式来做。

非常感谢您的帮助。

【问题讨论】:

  • 我知道如何使用 urllib 和 Mechanize 设置代理,但不使用 PyQt4。但是根据这个link,正确的语法是QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.HttpProxy, "proxy.example.com", 8080))HTH。

标签: python qt proxy pyqt pyqt4


【解决方案1】:

要使用您创建的QNetworkAccessManager 子类,请将此代码添加到您的Browser

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2012-06-13
    • 2018-01-31
    • 2023-04-02
    相关资源
    最近更新 更多