c httpclient抓取网页(Jvppeteer本库的灵感来自Puppeteer(Node.js)API)

优采云 发布时间: 2021-10-02 18:36

  c httpclient抓取网页(Jvppeteer本库的灵感来自Puppeteer(Node.js)API)

  合作伙伴

  这个库的灵感来自Puppeteer(Node.js),其API基本相同。这个库是为了方便使用 Java 来控制 Chrome 或 Chromium

  Jvppeteer 通过 DevTools 控制 Chromium 或 Chrome。默认情况下,它以无头模式运行,但也可以通过配置以“无头”模式运行。

  你可以在浏览器中手动执行的大部分操作都可以通过 Jvppeteer 来完成!这里有些例子:

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

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

  

io.github.fanyong920

jvppeteer

1.1.3

  摇篮

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

  mavenCentral()

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

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

  日志记录

  该库使用 SLF4J 进行日志记录,并且没有任何默认的日志记录实现。

  调试器将日志级别设置为 TRACE。

  独立罐

  如果你不使用任何依赖管理工具,你可以在这里找到最新的独立 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人工客服


线