python - 在代理后面使用 MechanicalSoup

标签 python mechanicalsoup

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

编辑:按照 Eytan 的提示,我在代码中添加了 proxyverify,这让我更进一步,但我仍然无法提交表单:

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不接受代理作为参数。

最佳答案

似乎必须在 session 级别指定代理。那么在 browser.open 中不需要它们,提交表单也可以:

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(即“OK”)。

关于python - 在代理后面使用 MechanicalSoup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888736/

相关文章:

python: undefined variable :__init__ 错误

python - Request.Response 对象不会重定向到正确的 URL

beautifulsoup - 使用 Mechanicalsoup 设置没有名称的表单元素的值

python - 使用 python 3 抓取需要登录的网站

python - SummaryWriter 不在 TensorFlow 中输出图形

python - 具有至少 k 个点的 Numpy 查找区间

python - 使用 Python 验证电子邮件地址

python - 通过 Python 登录网站 - 如何应对 CSRF?

python - 无法在 ipython/jupyter notebook 中运行 unittest 的主要功能