首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在代理后使用MechanicalSoup

在代理后使用MechanicalSoup
EN

Stack Overflow用户
提问于 2017-12-19 14:06:25
回答 2查看 2.1K关注 0票数 2

我正在尝试使用MechanicalSoup在Python上构建一个简单的webbot。不幸的是,我坐在一个(公司强制的)代理后面。我找不到向MechanicalSoup提供代理的方法。有这样的选择吗?如果没有,我有什么选择?

编辑:依循Eytan的提示,我在代码中添加了proxiesverify,这使我更进一步,但我仍然不能提交表单:

代码语言:javascript
复制
import mechanicalsoup

proxies = {
    'https': 'my.https.proxy:8080',
    'http':  'my.http.proxy:8080'
}
url = 'https://stackoverflow.com/'
browser = mechanicalsoup.StatefulBrowser()
front_page = browser.open(url, proxies=proxies, verify=False)
form = browser.select_form('form[action="/search"]')
form.print_summary()
form["q"] = "MechanicalSoup"
form.print_summary()
browser.submit(form, url=url)

代码挂在最后一行,submit不接受proxies作为参数。

EN

Stack Overflow用户

回答已采纳

发布于 2017-12-20 14:30:27

似乎必须在会话级别上指定代理。然后它们在browser.open中是不需要的,提交表单也是有效的:

代码语言:javascript
复制
import mechanicalsoup

proxies = {
    'https': 'my.https.proxy:8080',
    'http':  'my.http.proxy:8080'
}
url = 'https://stackoverflow.com/'
browser = mechanicalsoup.StatefulBrowser()
browser.session.proxies = proxies   # THIS IS THE SOLUTION!
front_page = browser.open(url, verify=False)
form = browser.select_form('form[action="/search"]')
form["q"] = "MechanicalSoup"
result = browser.submit(form, url=url)
result.status_code

报税表200 (即“好”)。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47888736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档