当前位置: 首页 > news >正文

Java 爬虫 jvppeteer

开源地址:https://gitee.com/fanyong920/jvppeteer

maven依赖:

        <!-- java爬虫 --><dependency><groupId>io.github.fanyong920</groupId><artifactId>jvppeteer</artifactId><version>1.1.3</version></dependency>

首次先下载Chrome启动器:

//自动下载,第一次下载后不会再下载
//BrowserFetcher.downloadIfNotExist(null);

如果失败按命令提示手动下载安装即可。

常用示例代码:

package com.java.jvppeteer.controller;import com.java.jvppeteer.service.CommonService;
import com.ruiyun.jvppeteer.core.Puppeteer;
import com.ruiyun.jvppeteer.core.browser.Browser;
import com.ruiyun.jvppeteer.core.page.Page;
import com.ruiyun.jvppeteer.options.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;@RestController
@RequestMapping(value = "/common")
public class CommonController {@PostMapping("/hello")public ResponseEntity<?> sayHello() {String value = "hello world!";return new ResponseEntity<>(value, HttpStatus.OK);}/*** 启动浏览器*/@GetMapping("/start")public void start() {try {//设置基本的启动配置,这里选择了‘有头’模式启动ArrayList<String> argList = new ArrayList<>();//自动下载,第一次下载后不会再下载//BrowserFetcher.downloadIfNotExist(null);LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();argList.add("--no-sandbox");argList.add("--disable-setuid-sandbox");Puppeteer.launch(options);} catch (Exception e) {throw new RuntimeException(e);}}/*** 页面跳转* @param* @return void*/@GetMapping("/go")public void go() {try {//自动下载,第一次下载后不会再下载//BrowserFetcher.downloadIfNotExist(null);ArrayList<String> argList = new ArrayList<>();// withHeadless 是否开启无头模式,无头模式不会显示浏览器LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();argList.add("--no-sandbox");argList.add("--disable-setuid-sandbox");Browser browser = Puppeteer.launch(options);Page page = browser.newPage();page.goTo("https://www.baidu.com/");} catch(Exception e){e.printStackTrace();}}/*** 生成pdf* @param* @return void*/@GetMapping("/pdf")public void pdf() {try {ArrayList<String> arrayList = new ArrayList<>();//生成pdf必须在无头模式下才能生效LaunchOptions options = new LaunchOptionsBuilder().withArgs(arrayList).withHeadless(true).build();arrayList.add("--no-sandbox");arrayList.add("--disable-setuid-sandbox");Browser browser = Puppeteer.launch(options);Page page = browser.newPage();page.goTo("https://gitee.com/fanyong920/jvppeteer");PDFOptions pdfOptions = new PDFOptions();pdfOptions.setPath("/Users/mac/BOOTCAMP/jayce/jvppeteer/test.pdf");page.pdf(pdfOptions);page.close();} catch(Exception e){e.printStackTrace();}}/*** 性能分析* @param* @return void*/@GetMapping("/tracing")public void tracing() {try {ArrayList<String> argList = new ArrayList<>();LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(true).build();argList.add("--no-sandbox");argList.add("--disable-setuid-sandbox");Browser browser = Puppeteer.launch(options);Page page = browser.newPage();//开启追踪page.tracing().start("/Users/mac/BOOTCAMP/jayce/jvppeteer/trace.json");page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");page.tracing().stop();} catch(Exception e){e.printStackTrace();}}/*** 页面截图*/@GetMapping("/screenshot")public void screenshot() {try {ArrayList<String> arrayList = new ArrayList<>();LaunchOptions options = new LaunchOptionsBuilder().withArgs(arrayList).withHeadless(true).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");ScreenshotOptions screenshotOptions = new ScreenshotOptions();//设置截图范围Clip clip = new Clip(1.0,1.56,400,400);screenshotOptions.setClip(clip);//设置存放的路径screenshotOptions.setPath("/Users/mac/BOOTCAMP/jayce/jvppeteer/test.png");page.screenshot(screenshotOptions);} catch(Exception e){e.printStackTrace();}}
}

相关文章:

  • 美易平台:全球金融市场一周前瞻G20会议至美联储纪要,关键事件点评
  • 【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——自我介绍(英文)
  • .net 微服务 服务保护 自动重试 Polly
  • Java 面向对象进阶 10 多态中调用成员的特点(黑马)
  • 代码随想录刷题第38天
  • Docker中如何删除某个镜像
  • 【微服务生态】Docker
  • 洛谷 P3879 阅读理解
  • 重学Java 18.学生管理系统项目
  • Windows 获取内存 API 汇总及使用方法
  • Python编程技巧 – 装饰器
  • HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-GPIO
  • 深入理解java虚拟机---自动内存管理
  • 一.重新回炉Spring Framework: 理解Spring IoC
  • Python第十九章(模块)
  • docker-consul
  • java8-模拟hadoop
  • laravel with 查询列表限制条数
  • LintCode 31. partitionArray 数组划分
  • opencv python Meanshift 和 Camshift
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vuex 学习笔记 01
  • 复杂数据处理
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 基于游标的分页接口实现
  • 简析gRPC client 连接管理
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 手机端车牌号码键盘的vue组件
  • 思维导图—你不知道的JavaScript中卷
  • 延迟脚本的方式
  • 一起参Ember.js讨论、问答社区。
  • 再谈express与koa的对比
  • Prometheus VS InfluxDB
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • #include到底该写在哪
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (09)Hive——CTE 公共表达式
  • (12)Linux 常见的三种进程状态
  • (2)(2.10) LTM telemetry
  • (Forward) Music Player: From UI Proposal to Code
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (八)Spring源码解析:Spring MVC
  • (笔试题)分解质因式
  • (动态规划)5. 最长回文子串 java解决
  • (二)windows配置JDK环境
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm码农论坛 毕业设计 231126
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包