0

我正在为我的雇主编写一个脚本,以从他们自己的网站获取某些数据。出于一长串原因,我需要从网站上获取显示的数据。我发现,其中一些数据是通过 js 调用检索的......

回想起来,我应该选择 mechanize,但我选择了 twill(我认为我可以使用 mechanize,因为 twill 将自己描述为 mechanize 的薄包装)该项目距离完成只有一个电话后,我拼命这样做不想为机械化重写所有基于斜纹的代码。

我需要提交未附加到表单的发布请求。所以我需要机械化(或类似的库)。根据斜纹布的文档,应该有一个机械化浏览器对象可通过以下代码检索:

#after logging in and successfully loading pages
b = get_browser()
mb = b._browser

我得到: AttributeError: 'TwillBrowser' object has no attribute '_browser'

查看源代码似乎斜纹的浏览器不再使用机械化的浏览器了?

所以我的问题是:

  1. 斜纹内部是否还有机械化浏览器。
  2. 如果是这样,我该如何得到它?
  3. 如果没有,我怎样才能从斜纹布中获取 cookie 以进行机械化,以便我可以使用这些 cookie 发出请求?

理想情况下,我会这样:

cjar = 'cookies.yaml'
save_cookies(cjar)
mb.open(url, data=data, cookies=cjar)

但我知道我需要更多的魔法,而不仅仅是添加 cookies=filename :)

4

1 回答 1

0
  1. 斜纹内部是否还有机械化浏览器。
  2. 如果是这样,我该如何得到它?

不,它不再内置于斜纹布中。虽然 pip 安装 twill 仍然包含 mechanize 到 twill 的文件中,但 twill 的代码从不导入这些模块。

  1. 如果没有,我怎样才能从斜纹布中获取 cookie 以进行机械化,以便我可以使用这些 cookie 发出请求?

从我读过的内容来看,似乎没有一种简单或微不足道的方法可以做到这一点。您可以从斜纹中保存_cookies(但您不能自定义它们的保存方式。)。Mechanize 需要帮助来读取 cookie 文件,并且在加载它们时需要忽略持久性等。 Mechanize 确实让您能够执行此操作,但我还没有找到任何可用的代码。
在我的情况下,编写一个可以让我同时登录斜纹和机械化的方法更容易。

于 2017-08-30T14:15:05.627 回答