使用curl进行高级屏幕抓取

0 投票
4 回答
717 浏览
提问于 2025-04-17 09:45

我需要写一个脚本,能够登录一个需要认证的页面,然后下载一个PDF文件。

不过,我要下载的这个PDF文件并不是直接通过一个网址获取的,而是需要在页面上点击一个特定的input按钮后生成的。当我查看HTML源代码时,只能看到按钮图标的链接和一些看起来很复杂的按钮inputname,还有action="."

而且,按钮所在的链接和表单名称也很模糊,比如:

  • 链接 = /WebObjects/MyStore.woa/wo/5.2.0.5.7.3
  • 输入名称 = 0.0.5.7.1.1.11.19.1.13.13.1.1

我该如何在脚本中登录这个页面,'点击'那个按钮,并下载PDF文件呢?

4 个回答

1

你可以观察一下,当你点击按钮时,浏览器发出了哪些请求(可以使用Firefox中的Firebug或者Chrome中的开发者工具)。这样你可能就能直接请求到PDF文件了。

如果不看到具体的页面,帮你解决问题会比较困难。

3

也许可以试试 Mechanize 这个模块,它可能会对你有帮助。

我觉得点击按钮后生成的那个网址可能是用JavaScript写的。所以,如果你想在Python脚本中运行JavaScript代码,可以看看 Spidermonkey

2

你可以试试 mechanize 或者 twill 这两个工具。HttpFox 或者 firebug 可以帮助你构建你的请求。记得你也可以把浏览器里的 cookies 保存下来,以后用 Python 的库再用这些 cookies。如果代码是由 JavaScript 生成的,可能可以进行一些“逆向工程”。如果不行的话,你可以运行一些 JavaScript 解释器,或者使用 selenium 或 windmill 来模拟一个真实的浏览器。

撰写回答