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();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode日记 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

Leetcode日记 226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 二叉树简介二叉树分类解题方法制作不易&#xff0c;感谢三连&#xff0c;谢谢啦 二叉树简介 二叉树&#xff08;Binary Tree&#xff09;是一种特殊的树形…

AUTOSAR AP——IDSM 入侵检测管理

什么是入侵检测系统管理器? 入侵检测系统(IDS)是一种安全控制,它检测并处理安全事件。入侵检测系统管理器(IdsM)是自适应平台架构中的一个功能集群,负责处理由安全传感器(自适应应用程序)报告的安全事件。 作为一个功能集群,IdsM包括一个向应用程序提供C++ API的库…

uniapp 放大中间图标

方法1&#xff1a;使用css /*样式直接复制到项目的App.vue即可*/.uni-tabbar { /*.uni-tabbar__item:nth-last-child(3) 修改倒数第三个 也就是中间的图标 我这边底部栏是五个*/.uni-tabbar__item:nth-last-child(3) {.uni-tabbar__bd {/*.uni-tabbar__icon 去掉原图标大小&…

【Spring】循环依赖

目录标题 什么是循环依赖循环依赖场景Java SE 演示Spring 容器演示三级缓存核心知识三级缓存四大方法三级缓存中的迁移 三级缓存源码分析源码思维导图 源码图例课前问题推荐阅读 循环依赖是什么&#xff1f;循环依赖的场景有哪一些&#xff1f;三级缓存分别是什么&#xff1f;三…

openEuler学习——mysql(第一次总结)

1、openEuler 二进制方式安装MySQL 8.0.x。 思路是先从官网获取安装包链接如下https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 然后解压安装修改权限&#xff0c;可以参考mysql官方网站步骤 [rootopenEuler-node1 ~]# wget -c https:…

DS:循环队列的实现

创作不易&#xff0c;给个三连吧&#xff01;&#xff01; 一、前言 对于循环队列&#xff0c;博主也是源自于一道力扣的OJ题 力扣&#xff1a;循环队列的设置 后来我在网上查过&#xff0c;这个循环队列是有自己的应用场景的&#xff01;&#xff01;并不是出题者为了出题…

网络防火墙综合实验

备注&#xff1a;电信网段15.1.1.0 移动网段14.1.1.0 办公区 11.1.1.0 生产区 10.1.1.0 服务区 13.1.1.0 公网 1.1.1.1 和 2.2.2.2 需求&#xff1a; 1、办公区设备可以通过电信链路和移动链路上网&#xff08;多对多nat&#xff0c;并且需要保留一个公网ip&#xff09; 2、…

excel如何指定求和

在Excel中&#xff0c;你可以使用函数来实现动态求和&#xff0c;使得当指定行的数值更新后&#xff0c;和也随之更新。具体来说&#xff0c;你可以使用SUM函数结合一些动态的引用方法。以下是一种实现方式&#xff1a; 假设你要对A列&#xff08;从A1到A10&#xff0c;以示例…

<网络安全>《40 网络攻防专业课<第六课 - 木马与防范>》

1 木马 1.1 木马简介 木马是攻击者编写的一段恶意代码&#xff0c;它潜伏在被攻击者的计算机中。攻击者通过这个代码可远程控制被攻击者的计算机&#xff0c;以窃取计算机上的信息或者操作计算机。从本质上讲&#xff0c;木马也是病毒的一种&#xff0c;因此不少用户也把木马…

代码随想录算法训练营DAY20 | 二叉树 (8)

一、LeetCode 701 二叉搜索树中的插入操作 题目链接&#xff1a; 701.二叉搜索树中的插入操作https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/ 思路&#xff1a;见缝插针罢辽。 class Solution {public TreeNode insertIntoBST(TreeNode root, i…

ChatGPT-01 用ChatGPT指令,自学任何领域的系统知识

1. 指令位置 Github仓库&#xff1a;Mr Ranedeer AI Tutor 但是需要开通chatgtp plus版本&#xff0c;并且打开代码解释器 2 使用 学习内容 开始学习 GPT甚至可以给你思考题&#xff0c;给出的答案还能进行评价 配置 通过配置表修改 深度 学习风格 沟通风格 语气风格 …

花费200元,我用全志H616和雪糕棒手搓了一台可UI交互的视觉循迹小车

常见的视觉循迹小车都具备有路径识别、轨迹跟踪、转向避障、自主决策等基本功能&#xff0c;如果不采用红外避障的方案&#xff0c;那么想要完全满足以上这些功能&#xff0c;摄像头、电机、传感器这类关键部件缺一不可&#xff0c;由此一来小车成本也就难以控制了。 但如果&a…

WebLogic:常用超时配置

1.连接超时 weblogic.management.configuration.KernelMBean.ConnectTimeout 官方解释&#xff1a; The amount of time that this server should wait to establish an outbound socket connection before timing out. 这个应该是WebLogic作为客户端建立socket连接时。也可使…

深度学习基础之《TensorFlow框架(3)—TensorBoard》

一、TensorBoard可视化学习 1、TensorFlow有一个亮点就是&#xff0c;我们能看到自己写的程序的可视化效果&#xff0c;这个功能就是TensorBoard 2、TensorFlow可用于训练大规模深度神经网络所需的计算&#xff0c;使用该工具涉及的计算往往复杂而深奥。为了方便TensorFlow程…

【代码库】去除字符串中的 HTML 标签

去除字符串中的 HTML 标签内容&#xff0c;只保留文本内容。 import java.util.regex.*;/*** 去除字符串中的 HTML 标签内容&#xff0c;只保留文本内容。*/ public class RemoveHtmlTags {public static void main(String[] args) {// 原始 HTML 字符串String html "<…

C++11---(2)

目录 一、新增容器 1.1、array 1.2、forward_list 1.3、unordered系列 二、右值引用和移动语义 2.1、什么是左值&#xff0c;什么是左值引用 2.2、什么是右值&#xff0c;什么是右值引用 2.3、左值引用和右值引用比较 2.4、右值引用使用场景和意义 2.5、右值引用引用…

「连载」边缘计算(十五)02-18:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; ChannelContext struct定义如下所示。 KubeEdge/beehive/pkg/core/context/context.go // ChannelContext is object for Context channel type ChannelContext struct { //ConfigFactory goarchaius.ConfigurationFactory channels map[…

EasyRecovery易恢复中文破解版2024最新破解序列号

EasyRecovery易恢复是一款来自美国的数据恢复软件&#xff0c;已有35年&#xff08;或38年&#xff09;的历史。它支持不同存储介质的数据恢复&#xff0c;包括电脑系统硬盘、移动硬盘等&#xff0c;并针对不同的数据丢失原因提供了相应的恢复方案。 EasyRecovery易恢复是一款功…

基于java的企业校园招聘平台的设计与实现

分享一个自己的毕业设计&#xff0c;想要获取源码的同学加V&#xff1a;qq2056908377 链接&#xff1a;https://pan.baidu.com/s/1It0CnXUvc9KVr1kDcHWvEw 提取码&#xff1a;1234 摘要&#xff1a; 摘要&#xff1a;本毕业设计旨在设计和实现一个企业校园招聘平台&#xf…

python Opencv 中绘制图

目录 一:绘制直线 二:绘制矩形 三:绘制圆形 四:绘制椭圆