python - Robobrowser 如何使用代理

标签 python django

我正在使用 http://robobrowser.readthedocs.org/en/latest/readme.html ,(一个新的基于漂亮的汤和请求库的python库)在django中。我的 Django 应用包含:

def index(request):    

    p=str(request.POST.get('p', False)) # p='https://www.yahoo.com/'

    pr="http://10.10.1.10:3128/"
    setProxy(pr)

    browser = RoboBrowser(history=True)
    postedmessage = browser.open(p)
    return HttpResponse(postedmessage)

我想在我的代码中添加代理,但在文档中找不到有关如何执行此操作的引用。可以这样做吗?

编辑:

根据您的建议,我已将代码更改为

    pr="http://10.10.1.10:3128/"
    setProxy(pr)
    browser = RoboBrowser(history=True)

与:

def setProxy(pr):
    import os
    os.environ['HTTP_PROXY'] = pr
    return

我现在得到:

Django Version: 1.6.4
Exception Type: LocationParseError
Exception Value:    
Failed to parse: Failed to parse: 10.10.1.10:3128

对下一步做什么有什么想法吗?我找不到对此错误的引用

最佳答案

最近在 RoboBrowser 中进行了一些 API 清理后,现在有两种相对简单的方法来控制代理。首先,您可以在您的请求 session 中配置代理,然后将该 session 传递给您的浏览器。这会将您的代理应用于通过浏览器发出的所有请求。

from requests import Session
from robobrowser import RoboBrowser

session = Session()
session.proxies = {'http': 'http://my.proxy.com/'}
browser = RoboBrowser(session=session)

其次,您可以根据每个请求设置代理。 RoboBrowseropenfollow_linksubmit_form 方法现在接受requests.Session 的关键字参数。发送。例如:

browser.open('http://stackoverflow.com/', proxies={'http': 'http://your.proxy.com'})

关于python - Robobrowser 如何使用代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177246/

相关文章:

python - 使用 python 和 matplotlib 获取箱线图中使用的值

python - 将 C++ 扩展 header 与 Python 包源分发捆绑在一起

python - 基于其中一列的 pandas DataFrame 子图的 Matplotlib axvspan 着色

python - 为用户模型定义两个不同的扩展

python - 基于 Pandas 中的对称矩阵从系列中删除重复项

python - 放置和删除 Django

django - 在 Django 中对执行外部服务调用的 View 进行单元测试时,什么是好的做法

Django 服务器结构和约定

python - 在列值中查找子字符串

django - 如何在 Django 中支持多封电子邮件的用户?