我正在尝试解析我教授在学校的网页,以便在她改变作业问题时遇到自动更新,然后遇到一些我以前没有做过的事情:由于ajax / jquery而延迟响应。
所以在perl中,我只是使用LWP :: Simple和get函数来获取页面的html。问题是,她正在使用jquery动态更新页面。在我的“获取”中,我在ajax / jquery完成加载之前得到了页面。
有没有办法请求页面,但获得最终输出?即使我必须使用固定的延迟(比如说10秒),那也没关系。我只想让它每天从我的学校帐户运行一次,以便它可以通过电子邮件告诉我分配已更新。学校是一个VPN的背后,每天检查是一件麻烦,我认为我可以用一些快速的脚本来补救:)。
答案 0 :(得分:2)
有些人建议使用WWW::Mechanize::Firefox
,如果从无头服务器运行脚本,则可能无法选择mirror
。另一个选择是阅读她的JavaScript / jQuery代码,看看它在做什么。您的Perl代码可能会为AJAX代码正在执行的相同资源发出直接HTTP请求。通过了解jQuery AJAX请求如何修改页面,您可以充分更新Perl以反映它。
如果不是主要请求,LWP :: Simple的{{1}}方法可能对AJAX请求有用。它执行"conditional GET",这意味着只有在某些内容发生变化时才会下载正文,从而加快了速度。