Search in sources :

Example 1 with ScreenshotOptions

use of com.ruiyun.jvppeteer.options.ScreenshotOptions in project epic4j by huisunan.

the class CrawTest method test.

@Test
@SneakyThrows
public void test() {
    BrowserFetcher.downloadIfNotExist("938248");
    String dataPath = new FileUrlResource("./data/chrome/tests").getFile().getAbsolutePath();
    LaunchOptions options = new LaunchOptionsBuilder().withArgs(Arrays.asList("--blink-settings=imagesEnabled=false", "--no-first-run", "--disable-gpu", "--no-default-browser-check", "--no-sandbox")).withHeadless(false).withUserDataDir(dataPath).withExecutablePath("").withIgnoreDefaultArgs(Collections.singletonList("--enable-automation")).build();
    Browser browser = Puppeteer.launch(options);
    Page page = browser.pages().get(0);
    // PageUtil.crawSet(page);
    // page.goTo("http://localhost:9999/");
    page.goTo("http://www.baidu.com/");
    TimeUnit.SECONDS.sleep(10);
    FileUrlResource errorDir = new FileUrlResource("data/test");
    File file = errorDir.getFile();
    log.debug("mkdir {}", file.mkdirs());
    ScreenshotOptions screenshotOptions = new ScreenshotOptions();
    screenshotOptions.setQuality(100);
    screenshotOptions.setPath(file.getAbsolutePath() + File.separator + "report.jpg");
    screenshotOptions.setType("jpeg");
    page.screenshot(screenshotOptions);
    FileUtil.writeUtf8String(page.content(), new File(file.getAbsolutePath() + File.separator + "report.html"));
    log.info("success");
}
Also used : LaunchOptions(com.ruiyun.jvppeteer.options.LaunchOptions) LaunchOptionsBuilder(com.ruiyun.jvppeteer.options.LaunchOptionsBuilder) ScreenshotOptions(com.ruiyun.jvppeteer.options.ScreenshotOptions) Page(com.ruiyun.jvppeteer.core.page.Page) FileUrlResource(org.springframework.core.io.FileUrlResource) File(java.io.File) Browser(com.ruiyun.jvppeteer.core.browser.Browser) Test(org.junit.jupiter.api.Test) SneakyThrows(lombok.SneakyThrows)

Example 2 with ScreenshotOptions

use of com.ruiyun.jvppeteer.options.ScreenshotOptions in project epic4j by huisunan.

the class BaseRunner method doStart.

public void doStart(String email, String password) {
    Browser browser = null;
    try {
        log.info("start {} work", email);
        // 用户文件路径
        String userDataPath = new FileUrlResource(epicConfig.getDataPath() + File.separator + email).getFile().getAbsolutePath();
        // 获取浏览器对象
        browser = iStart.getBrowser(userDataPath);
        // 获取默认page
        Page page = iStart.getDefaultPage(browser);
        // 加载cookie
        if (StrUtil.isNotBlank(epicConfig.getCookiePath()) && FileUtil.exist(epicConfig.getCookiePath())) {
            log.debug("load cookie");
            List<CookieParam> cookies = JSONUtil.toBean(IoUtil.read(new FileReader(epicConfig.getCookiePath())), new TypeReference<List<CookieParam>>() {
            }, false);
            page.setCookie(cookies);
        }
        // 反爬虫设置
        PageUtil.crawSet(page);
        // 打开epic主页
        page.goTo(epicConfig.getEpicUrl());
        boolean needLogin = iStart.needLogin(browser);
        log.debug("needLogin:{}", needLogin);
        if (needLogin) {
            iLogin.login(page, email, password);
        }
        List<Item> weekFreeItems = iStart.getWeekFreeItems(page);
        // 领取游戏
        List<Item> receive = iStart.receive(page, weekFreeItems);
        for (INotify notify : notifies) {
            if (notify.notifyReceive(receive)) {
                break;
            }
        }
    } catch (Exception e) {
        if (epicConfig.getErrorScreenShoot()) {
            Optional.ofNullable(browser).map(Browser::pages).filter(CollUtil::isNotEmpty).map(pages -> pages.get(0)).ifPresent(page -> {
                try {
                    FileUrlResource errorDir = new FileUrlResource("data/error");
                    log.debug("create error dir {}", errorDir.getFile().mkdirs());
                    ScreenshotOptions options = new ScreenshotOptions();
                    options.setQuality(100);
                    options.setPath(errorDir.getFile().getAbsolutePath() + File.separator + System.currentTimeMillis() + ".jpg");
                    options.setType("jpeg");
                    page.screenshot(options);
                } catch (IOException ioException) {
                    log.error("截图失败");
                }
            });
        }
        log.error("程序异常", e);
    } finally {
        if (browser != null) {
            browser.close();
        }
    }
}
Also used : DateUtil(cn.hutool.core.date.DateUtil) Item(com.hsn.epic4j.bean.Item) SneakyThrows(lombok.SneakyThrows) Autowired(org.springframework.beans.factory.annotation.Autowired) JSONUtil(cn.hutool.json.JSONUtil) PreDestroy(javax.annotation.PreDestroy) DateTime(cn.hutool.core.date.DateTime) FileUrlResource(org.springframework.core.io.FileUrlResource) ThreadPoolTaskScheduler(org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler) Browser(com.ruiyun.jvppeteer.core.browser.Browser) UserInfo(com.hsn.epic4j.bean.UserInfo) INotify(com.hsn.epic4j.notify.INotify) IoUtil(cn.hutool.core.io.IoUtil) EpicConfig(com.hsn.epic4j.config.EpicConfig) ScreenshotOptions(com.ruiyun.jvppeteer.options.ScreenshotOptions) IOException(java.io.IOException) File(java.io.File) CronTrigger(org.springframework.scheduling.support.CronTrigger) Page(com.ruiyun.jvppeteer.core.page.Page) CollUtil(cn.hutool.core.collection.CollUtil) TypeReference(cn.hutool.core.lang.TypeReference) StrUtil(cn.hutool.core.util.StrUtil) Slf4j(lombok.extern.slf4j.Slf4j) Component(org.springframework.stereotype.Component) List(java.util.List) CookieParam(com.ruiyun.jvppeteer.protocol.network.CookieParam) DateField(cn.hutool.core.date.DateField) Optional(java.util.Optional) FileUtil(cn.hutool.core.io.FileUtil) PageUtil(com.hsn.epic4j.util.PageUtil) FileReader(java.io.FileReader) INotify(com.hsn.epic4j.notify.INotify) ScreenshotOptions(com.ruiyun.jvppeteer.options.ScreenshotOptions) Page(com.ruiyun.jvppeteer.core.page.Page) IOException(java.io.IOException) IOException(java.io.IOException) CookieParam(com.ruiyun.jvppeteer.protocol.network.CookieParam) Item(com.hsn.epic4j.bean.Item) FileReader(java.io.FileReader) List(java.util.List) FileUrlResource(org.springframework.core.io.FileUrlResource) Browser(com.ruiyun.jvppeteer.core.browser.Browser)

Aggregations

Browser (com.ruiyun.jvppeteer.core.browser.Browser)2 Page (com.ruiyun.jvppeteer.core.page.Page)2 ScreenshotOptions (com.ruiyun.jvppeteer.options.ScreenshotOptions)2 File (java.io.File)2 SneakyThrows (lombok.SneakyThrows)2 FileUrlResource (org.springframework.core.io.FileUrlResource)2 CollUtil (cn.hutool.core.collection.CollUtil)1 DateField (cn.hutool.core.date.DateField)1 DateTime (cn.hutool.core.date.DateTime)1 DateUtil (cn.hutool.core.date.DateUtil)1 FileUtil (cn.hutool.core.io.FileUtil)1 IoUtil (cn.hutool.core.io.IoUtil)1 TypeReference (cn.hutool.core.lang.TypeReference)1 StrUtil (cn.hutool.core.util.StrUtil)1 JSONUtil (cn.hutool.json.JSONUtil)1 Item (com.hsn.epic4j.bean.Item)1 UserInfo (com.hsn.epic4j.bean.UserInfo)1 EpicConfig (com.hsn.epic4j.config.EpicConfig)1 INotify (com.hsn.epic4j.notify.INotify)1 PageUtil (com.hsn.epic4j.util.PageUtil)1