不确定如何在这个特定实例中处理javascript和机械化

不确定如何在这个特定实例中处理javascript和机械化,javascript,ruby,json,automation,mechanize,Javascript,Ruby,Json,Automation,Mechanize,我将访问亚马逊KDP上的多个帐户- 我的任务是登录每个帐户并检查帐户的收入。Mechanize非常适合登录和处理cookies等,但是显示帐户收入的页面使用javascript动态填充页面 我做了一点挖掘,发现javascripts发出了以下请求: https://kdp.amazon.com/self-publishing/reports/transactionSummary?_=1326419839161&marketplaceID=ATVPDKIKX0DER 以及包含会话ID、令

我将访问亚马逊KDP上的多个帐户-

我的任务是登录每个帐户并检查帐户的收入。Mechanize非常适合登录和处理cookies等,但是显示帐户收入的页面使用javascript动态填充页面

我做了一点挖掘,发现javascripts发出了以下请求:

https://kdp.amazon.com/self-publishing/reports/transactionSummary?_=1326419839161&marketplaceID=ATVPDKIKX0DER
以及包含会话ID、令牌和一些随机内容的cookie。每次我点击一个链接来显示结果时,上面的GET url的数字部分是不同的,即使它是同一个链接

作为对请求的响应,浏览器随后会收到以下内容(剪下一堆内容,这样它就不会占据整个页面):

{“iTotalDisplayRecords”:13,“iTotalRecords”:13,“aaData”:[[“12/03/2011”,“保持…”,“艾米
....
“,”B004PGMHEM“,”1“,”1“,”0“,”70%,”4.47“,”0.06“,”4.47“,”0.01“,”0.00“,”0.00“,”0.00“,”,”,”,”,,”总计:$39.53“,”垃圾“]}
我想我可以使用mechanize的cookie容器来提取属于该请求一部分的cookie,但是我如何确定该数字是什么以及它是如何生成的呢?页面源代码中的Javascript在最好的情况下看起来很神秘。以下是其中之一:

在我点击页面上的某个东西之后,是否有一种方法可以真正跟踪“幕后”运行的javascripts,以便我可以结合mechanize模拟该请求

丹麦


PS:我不能(或者更确切地说,我不想)使用watir来完成这项任务,因为理论上我可能要处理的不仅仅是几个帐户,所以这必须非常快。

Mechanize不运行嵌入页面中的JavaScript。它只检索HTML

如果页面包含JavaScript,Mechanize可以看到它,您可以使用Mechanize内部使用的Nokogiri来检索
标记的内容。但是,由于在浏览器中执行JavaScript而加载的任何内容都不会在Mechanize中运行。Watir是解决这个问题的解决方案,因为它驱动浏览器本身,浏览器将解释并运行页面中的JavaScript

您可以在浏览器中单步浏览页面,查看源代码,了解使用FireBug运行的是什么。从这些信息中,您可以了解JavaScript正在做什么,然后使用Mechanize和Nokogiri从页面中提取所需信息,从而构建下一个URL,但这可能需要大量工作

您所问的与其他许多关于Mechanize和JavaScript的问题类似。我建议您查看这些SO链接以获得其他想法:


或者询问有关Ruby、JavaScript和Mechanize的问题。

它只是一个时间戳,只用于破坏缓存。试试这个:

Time.now.to_i.to_s

只是勉强弄明白而已。你是一个非常聪明的人:)谢谢Vlad:)他们在url中添加了当前的时间戳,以保证浏览器不会尝试为它的缓存版本提供服务。
Time.now.to_i.to_s