使用curl进行高级屏幕抓取
我需要写一个脚本,能够登录一个需要认证的页面,然后下载一个PDF文件。
不过,我要下载的这个PDF文件并不是直接通过一个网址获取的,而是需要在页面上点击一个特定的input
按钮后生成的。当我查看HTML源代码时,只能看到按钮图标的链接和一些看起来很复杂的按钮input
的name
,还有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 来模拟一个真实的浏览器。