使用curl进行高级屏幕抓取

时间:2012-01-07 20:37:51

标签: python curl screen-scraping

我需要创建一个脚本,该脚本将登录到经过身份验证的页面并下载pdf。

但是,我需要下载的pdf不是URL,而是在点击页面上的特定input按钮时生成的。当我检查HTML源代码时,它只会向我提供按钮图形的网址以及按钮nameinput的一些模糊action="."

此外,按钮所在的网址和表单名称都会被遮挡,例如:

  • url = /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 个答案:

答案 0 :(得分:3)

也许Mechanize模块可以提供帮助。

我认为点击按钮的网址可能是使用javascript生成的。因此,要从python脚本运行javascript代码,请查看Spidermonkey

答案 1 :(得分:2)

尝试机械化或斜纹。 HttpFox或firebug可以帮助您构建查询。请记住,您也可以从浏览器中腌制cookie,稍后再使用py libs。如果代码是通过javascript生成的,则可以“反向工程”'它。如果nof你可以运行一些javascript解释或使用selenium或windmill编写真实的浏览器脚本。

答案 2 :(得分:1)

您可以观察单击按钮时所做的请求(使用Firefox中的Firebug或Chrome中的开发人员工具)。然后,您可以直接请求PDF。

如果没有看到相关页面,很难提供帮助。

答案 3 :(得分:0)

正如Acorn所说,你应该尝试监控实际的请求,看看你是否能发现一种模式。

如果没有,那么你最好的选择是自动化一个功能齐全的浏览器,它将能够运行Javascript,所以你将完全模仿普通用户会做什么。在Python Wiki上查看this page的想法,查看围绕Web“Python库”和“浏览器技术”的 Python Wrappers部分。