是否可以从客户端自动回发?

时间:2009-06-19 14:27:24

标签: scripting automation postback

我的一位客户需要定期从网络服务中提取客户数据。数据本身通过javascript回发提供为CSV文件,与服务网站中的大部分导航一样。

目前,整个系统中最严重的瓶颈是需要人员登录网页,导航到下载页面,并手动将下载的文件添加到系统的其余部分。

通过回发下载文件的过程可以自动化吗? (比如说通过可以通过cron运行的shell脚本?)

如果是这样,你会建议哪种方式最适合这样做?

2 个答案:

答案 0 :(得分:4)

如果有人再次遇到这个问题,我找到了解决方案:

诀窍是在适当的网页上使用Mechanize和一系列Browser.submit()来电。

其他人可能会遇到的一个问题是ASP.NET页面(根据我的经验,基于回发的导航的最大来源)在表单中也需要一个名为__EVENTTARGET的隐藏参数,它不会当你使用机械化时存在。

这些页面上的__doPostBack('foo')函数通过每个链接上的javascript onclick事件为__EVENTTARGET提供相关值,但由于mechanize不使用javascript,因此您需要设置这些值自己。

我编写了一个快速的小实用程序函数,可以在我的脚本中使用:

def add_event_target(form, target):
    #Creates a new __EVENTTARGET control and adds the value specified
    #.NET doesn't generate this in mechanize for some reason -- suspect maybe is 
    #normally generated by javascript or some useragent thing?
    form.new_control('hidden','__EVENTTARGET',attrs = dict(name='__EVENTTARGET'))
    form.set_all_readonly(False)
    form["__EVENTTARGET"] = target

我希望这对后来可能会遇到这个问题的人有所帮助。

答案 1 :(得分:-1)

您可以使用AJAX计时器。查看asp.net/ajax网站。