Java爬虫框架:Jvppeteer

Jvppeteer:https://github.com/fanyong920/jvppeteer

Jvppeteer通过DevTools控制 Chromium 或 Chrome。
默认情况下,以headless模式运行,也可以通过配置运行’有头’模式。

你可以在浏览器中手动执行的绝大多数操作都可以使用 Jvppeteer 来完成! 下面是一些示例:

  • 生成页面 PDF。
  • 抓取 SPA(单页应用)并生成预渲J染内容(即“SSR”(服务器端渲染))。
  • 自动提交表单,进行 UI 测试,键盘输入等。
  • 创建一个时时更新的自动化测试环境。 使用最新的 JavaScript 和浏览器功能直接在最新版本的Chrome中执行测试。
  • 捕获网站的 timeline trace,用来帮助分析性能问题。
  • 测试浏览器扩展。

开始使用

以下是使用依赖管理工具(如maven或gradle)的简要指南。

Maven

要使用maven,请将此依赖添加到pom.xml文件中:

<dependency>
  <groupId>com.ruiyungroupId>
  <artifactId>jvppeteerartifactId>
  <version>1.0.1version>
dependency>

Gradle

要使用Gradle,请将Maven中央存储库添加到您的存储库列表中:

mavenCentral()

然后,您可以将最新版本添加到您的构建中。

compile "com.ruiyun:jvppeteer:1.0.0-SNAPSHOT"

Logging

该库使用SLF4J进行日志记录,并且不附带任何默认日志记录实现。

调试日志将使用日志级别进行DEBUG。

接下来将给出几个例子:

启动:

//设置基本的启动配置,这里选择了‘有头’模式启动
LaunchOptions options = new OptionsBuilder().withHeadless(false).withExecutablePath("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe").build();
//启动
Puppeteer.launch(options);

在这个例子中,我们明确指明了启动路径,程序就会根据指明的路径启动对应的浏览器,如果没有明确指明路径,那么程序会尝试启动默认安装路径下的Chrome浏览器

导航:

ArrayList<String> arrayList = new ArrayList<>();
        LaunchOptions options = new OptionsBuilder().withArgs(arrayList).withHeadless(false).build();
        arrayList.add("--no-sandbox");
        arrayList.add("--disable-setuid-sandbox");
        Browser browser = Puppeteer.launch(options);
        Page page = browser.newPage();
        page.goTo("https://www.taobao.com/about/");
        browser.close();

这个例子中,浏览器导航到具体某个页面后关闭。在这里并没有指明启动路径。arrayList是放一些额外的命令行启动参数的,在下面资源章节中我会给出相关资料。

生成PDF:

ArrayList<String> arrayList = new ArrayList<>();
String path = "D:\\develop\\project\\toString\\chrome-win\\chrome.exe;
//生成pdf必须在无厘头模式下才能生效
LaunchOptions options = new OptionsBuilder().withArgs(arrayList).withHeadless(true).withExecutablePath(path).build();
arrayList.add("--no-sandbox");
arrayList.add("--disable-setuid-sandbox");
Browser browser = Puppeteer.launch(options);
Page page = browser.newPage();
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
PDFOptions pdfOptions = new PDFOptions();
pdfOptions.setPath("test.pdf");
page.pdf(pdfOptions);

在这个例子中,导航到某个页面后,将整个页面截图,并写成PDF文件。注意,生成PDF必须在headless模式下才能生效

TRACING:性能分析

ArrayList<String> arrayList = new ArrayList<>();
String path = "D:\\develop\\project\\toString\\chrome-win\\chrome.exe";

LaunchOptions options = new OptionsBuilder().withArgs(arrayList).withHeadless(true).withExecutablePath(path).build();
arrayList.add("--no-sandbox");
arrayList.add("--disable-setuid-sandbox");
Browser browser = Puppeteer.launch(options);

Page page = browser.newPage();
//开启追踪
page.tracing().start("C:\\Users\\howay\\Desktop\\trace.json",true,new HashSet<>());
page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");
//发出追踪结束信号
page.tracing().stop();

在这个例子中,将在页面导航完成后,生成一个json格式的文件,里面包含页面性能的具体数据,可以用Chrome浏览器开发者工具打开该json文件,并分析性能。

更多的例子请看这里

你可能感兴趣的:(爬虫,java,chrome,maven,javascript,spring,boot)