使用HtmlUnit抓取js渲染后的页面 | 您所在的位置:网站首页 › js获取controller数据 › 使用HtmlUnit抓取js渲染后的页面 |
目的:在Linux命令行执行命令,例如 someCmd someUrl 如果someCmd是wget/curl这种,只能得到一个html,里边的js所拉取(渲染)的数据是得不到的。 一、几个失败的尝试 1、PhantomJS 但测试后也只能得到js未渲染时的html,也试了window.setTimeout等待js渲染完成,总之没成功。 2、httrack 测试其命令行也没成功,只能得到未渲染的html,不知道怎么配置option 二、HtmlUnit 是一个java库(里边一堆jar),先在Windows Eclipse参考下边链接做了个java工程 参考 https://www.cnblogs.com/lavender-pansy/p/10845297.html 工程右键 - Java Build Path - Add External JARs - 浏览到事先下载解压好的文件夹内 例如都已解压到 htmlunit-3.3.0\lib 下,把所有的JAR都add到工程里。 不过,上边参考例子java里边的import htmlunit相关语句要删掉,然后根据工程的提示,修改为合适的代码,例如我的是: import org.htmlunit.BrowserVersion; import org.htmlunit.FailingHttpStatusCodeException; import org.htmlunit.WebClient; import org.htmlunit.html.HtmlPage; 然后这个源码也要放到某个package下,不要不使用package(可能与放到linux执行jar是否报错有关)。 在Eclipse里运行成功(即,得到了html里js渲染后拉取到的服务端数据)后,右键Export - Runnable JAR file - 起名为例如 HtmlUnit.jar 所以这个jar已包含了所有依赖的jar了(20多M) 上传这个jar到linux服务器下(已配置好java环境) 在jar所在文件夹下 java -jar HtmlUnit.jar 即可。 java里是写死了url,后边做成参数的或读取某个配置文件(例如,里边每行一个所要读取的url) 改进:运行20M大的jar太土鳖了,后来还是有空学了下直接运行class文件: Windows下Eclipse下链接多个jar的java工程,在Linux下命令行编译和运行的例子_piggy514的博客-CSDN博客 |
CopyRight 2018-2019 实验室设备网 版权所有 |