浏览器抓取网页(Jvppeteer本库的灵感来自Puppeteer(Node.js)API)

优采云 发布时间: 2021-09-18 05:07

  浏览器抓取网页(Jvppeteer本库的灵感来自Puppeteer(Node.js)API)

  jvppeter

  这个库的灵感来源于puppeter(node.JS),API与它基本一致。此库用于方便使用Java操作chrome或chrome

  JVMPeter通过devtools控制铬或铬。默认情况下,它在无头模式下运行,或通过配置在“无头”模式下运行

  您可以在浏览器中手动执行的大多数操作都可以使用JVMPeter完成!以下是一些例子:

  首先,这里是使用依赖关系管理工具(如Maven或gradle)的简要指南。马文

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

  

io.github.fanyong920

jvppeteer

1.1.3

  格拉德尔

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

  mavenCentral()

  然后可以将最新版本添加到生成中

  compile "io.github.fanyong920:jvppeteer:1.1.3"

  伐木

  该库使用slf4j进行日志记录,没有任何默认日志记录实现

  调试器将日志级别设置为跟踪

  独立罐

  如果不使用任何依赖项管理工具,可以在此处找到最新的独立JAR

  快速启动1、浏览器

   //设置基本的启动配置,这里选择了‘有头’模式启动

ArrayList 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);

  在本例中,如果指定启动路径,程序将根据指定路径启动相应的浏览器。如果未指定路径,程序将尝试在默认安装路径下启动Chrome浏览器

  2、导航到一个页面

   //自动下载,第一次下载后不会再下载

BrowserFetcher.downloadIfNotExist(null);

ArrayList argList = new ArrayList();

LaunchOptions options = new LaunchOptionsBuilder().withArgs(argList).withHeadless(false).build();

argList.add("--no-sandbox");

argList.add("--disable-setuid-sandbox");

Browser browser = Puppeteer.launch(options);

Browser browser2 = Puppeteer.launch(options);

Page page = browser.newPage();

page.goTo("https://www.taobao.com/about/");

browser.close();

Page page1 = browser2.newPage();

page1.goTo("https://www.taobao.com/about/");

  在本例中,浏览器导航到特定页面并关闭。此处未指明启动路径。Arglist放置一些额外的命令行启动参数。我将在下面的参考资料部分提供相关信息

  3、生成页面的PDF

   //自动下载,第一次下载后不会再下载

BrowserFetcher.downloadIfNotExist(null);

ArrayList 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://www.baidu.com/?tn=98012088_10_dg&ch=3");

PDFOptions pdfOptions = new PDFOptions();

pdfOptions.setPath("test.pdf");

page.pdf(pdfOptions);

page.close();

browser.close();

  在本例中,导航到某个页面后,拍摄整个页面的屏幕截图,并将其作为PDF文件写入。请注意,生成的PDF必须处于headless模式才能生效

  4、TRACING性能分析

   //自动下载,第一次下载后不会再下载

BrowserFetcher.downloadIfNotExist(null);

ArrayList 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("C:\\Users\\howay\\Desktop\\trace.json");

page.goTo("https://www.baidu.com/?tn=98012088_10_dg&ch=3");

page.tracing().stop();

  在本例中,页面导航完成后将生成一个JSON文件,其中收录页面性能的特定数据。您可以使用Chrome浏览器开发工具打开JSON文件并分析性能

  5、页面截图

   BrowserFetcher.downloadIfNotExist(null);

ArrayList 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("test.png");

page.screenshot(screenshotOptions);

  页面导航完成后,设置屏幕截图范围和图像保存路径以启动屏幕截图

  更多示例请参见此处

  资源devtools protocolchrome命令行启动参数

  在此存储库中找到的所有内容都是Apache许可的。有关详细信息,请参阅许可证文件

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线