文章目录
- jBrowserDriver 是一个纯 Java 的基于 WebKit 的无图形化嵌入式浏览器,可以用于 Web 页面的流程自动化,网页爬虫、页面测试等各种场景。 aShot 是一个功能强大的跨平台 WebDriver 截图工具,详细功能可以参考 GitHub。
- <dependency> <groupId>com.machinepublishers</groupId> <artifactId>jbrowserdriver</artifactId> <version>1.0.0-RC1</version> </dependency> <dependency> <groupId>ru.yandex.qatools.ashot</groupId> <artifactId>ashot</artifactId> <version>1.5.2</version> </dependency>
- 举个例子,如抓取百度搜索结果第二条记录,这个操作的主要流程是这样的: 打开 baidu.com 首页 在输入框中输入搜索内容 点击“百度一下” 在新打开的页面中略作等待,待 ajax 渲染完成 截图及结果分析 直接上代码: public class BaiduScratcher { public static void main(String[] args) throws IOException { JBrowserDriver driver = new JBrowserDriver(Settings.builder().timezone(Timezone.ASIA_SHANGHAI).build()); // 打开页面 driver.get("https://www.baidu.com/"); // 找到输入框,并输入,findElement 是一系列方法,为了方便此处使用 Xpath driver.findElementByXPath("//*[@id=\"kw\"]").sendKeys("Google"); // 找到“百度一下”按钮并点击 driver.findElementByXPath("//*[@id=\"su\"]").click(); // 因为此页面内容是 ajax 加载的,等 JS 执行完成 driver.pageWait(); // 截第二条数据 ImageIO.write( new AShot().coordsProvider(new WebDriverCoordsProvider()) .takeScreenshot(driver, driver.findElementByXPath("//*[@id=\"2\"]")).getImage(), "png", new File("E:\\1.png")); // 输出第三条数据内容 System.out.println(driver.findElementByXPath("//*[@id=\"3\"]").getText()); driver.quit(); } }
- 如果有其它需求直接参照 GitHub 上的 README 文档
jBrowserDriver 是一个纯 Java 的基于 WebKit 的无图形化嵌入式浏览器,可以用于 Web 页面的流程自动化,网页爬虫、页面测试等各种场景。
aShot 是一个功能强大的跨平台 WebDriver 截图工具,详细功能可以参考 GitHub。
<dependency>
<groupId>com.machinepublishers</groupId>
<artifactId>jbrowserdriver</artifactId>
<version>1.0.0-RC1</version>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>com.machinepublishers</groupId>
<artifactId>jbrowserdriver</artifactId>
<version>1.0.0-RC1</version>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.ashot</groupId>
<artifactId>ashot</artifactId>
<version>1.5.2</version>
</dependency>
举个例子,如抓取百度搜索结果第二条记录,这个操作的主要流程是这样的:
- 打开 baidu.com 首页
- 在输入框中输入搜索内容
- 点击“百度一下”
- 在新打开的页面中略作等待,待 ajax 渲染完成
- 截图及结果分析
直接上代码:
public class BaiduScratcher {
public static void main(String[] args) throws IOException {
JBrowserDriver driver = new JBrowserDriver(Settings.builder().timezone(Timezone.ASIA_SHANGHAI).build());
// 打开页面
driver.get("https://www.baidu.com/");
// 找到输入框,并输入,findElement 是一系列方法,为了方便此处使用 Xpath
driver.findElementByXPath("//*[@id=\"kw\"]").sendKeys("Google");
// 找到“百度一下”按钮并点击
driver.findElementByXPath("//*[@id=\"su\"]").click();
// 因为此页面内容是 ajax 加载的,等 JS 执行完成
driver.pageWait();
// 截第二条数据
ImageIO.write(
new AShot().coordsProvider(new WebDriverCoordsProvider())
.takeScreenshot(driver, driver.findElementByXPath("//*[@id=\"2\"]")).getImage(),
"png", new File("E:\\1.png"));
// 输出第三条数据内容
System.out.println(driver.findElementByXPath("//*[@id=\"3\"]").getText());
driver.quit();
}
}
如果有其它需求直接参照 GitHub 上的 README 文档
发表回复