c httpclient抓取网页(Jvppeteer本库的灵感来自Puppeteer(Node.js)API)
优采云 发布时间: 2021-10-02 18:36c 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 许可。有关详细信息,请参阅许可证文件