使用HtmlUnit抓取js渲染后的页面 您所在的位置:网站首页 js获取controller数据 使用HtmlUnit抓取js渲染后的页面

使用HtmlUnit抓取js渲染后的页面

2023-07-02 04:54| 来源: 网络整理| 查看: 265

目的:在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 实验室设备网 版权所有