HTTPBuilder在Javascript执行后获取

时间:2014-09-15 00:31:34

标签: grails groovy screen-scraping http-get

我一直在使用HTTPBuilder作为获取网站HTML内容的方式。例如,这就是我使用它的方式:

def http = new HTTPBuilder(url)

def root = http.get([:])

// Really just the standard approach.

现在这对于静态HTML网站非常有效,但是我现在正试图从加载执行Javascript的网站上获取数据,这会填充页面。例如this page

我的问题是,在返回HTML内容之前,Grails / Groovy是否有本地方式等待所有Javascript执行完毕。如果不是原生的,那么第三方呢?

研究我已尝试

  • 我看过那些试图模仿浏览器的图书馆。我想如果我能让库执行Javascript并且只返回结果,我可以模仿我想要的行为。我对此的研究有些局限,因为我发现的图书馆只能控制你User-Agent之类的东西。

1 个答案:

答案 0 :(得分:1)

您使用的方法仅从服务器获取原始HTML内容。所以没有什么可以下载或执行任何代码。 Selenium可能会工作(或Geb,它周围的Groovy包装),但getPageSource method表示在JavaScript后获取HTML内容取决于驱动程序。您可能会发现其中一个驱动程序(chrome,firefox等)确实在JavaScript后返回结果。如果这不起作用,请尝试使用PhantomJS(blog post on what you want)。