Java调用selenium爬取网页内容

前言

Selenium Java API Docs
官方文档:https://www.selenium.dev/selenium/docs/api/java/

Selenium WebDriver | Selenium 中文文档:

https://wizardforcel.gitbooks.io/selenium-doc/content/official-site/selenium-web-driver.html

https://www.javadoc.io/doc/org.seleniumhq.selenium/selenium-api/2.50.1/org/openqa/selenium/WebDriver.html

一、Selenium 是什么?

Selenium 是一组软件工具集,每一个都有不同的方法来支持测试自动化。大多数使用 Selenium 的QA工程师只关注一两个最能满足他们的项目需求的工具上。然而,学习所有的工具你将有更多选择来解决不同类型的测试自动化问题。这一整套工具具备丰富的测试功能,很好的契合了测试各种类型的网站应用的需要。这些操作非常灵活,有多种选择来定位 UI 元素,同时将预期的测试结果和实际的行为进行比较。Selenium 一个最关键的特性是支持在多浏览器平台上进行测试。

二、Selenium 项目简史

Selenium 诞生于 2004 年,当在 ThoughtWorks 工作的 Jason Huggins 在测试一个内部应用时。作为一个聪明的家伙,他意识到相对于每次改动都需要手工进行测试,他的时间应该用得更有价值。他开发了一个可以驱动页面进行交互的 Javascript 库,能让多浏览器自动返回测试结果。那个库最终变成了 Selenium 的核心,它是 Selenium RC(远程控制)和 Selenium IDE 所有功能的基础。Selenium RC 是开拓性的,因为没有其他产品能让你使用自己喜欢的语言来控制浏览器。

Selenium 是一个庞大的工具,所以它也有自己的缺点。由于它使用了基于 Javascript 的自动化引擎,而浏览器对 Javascript 又有很多安全限制,有些事情就难以实现。更糟糕的是,网站应用正变得越来越强大,它们使用了新浏览器提供的各种特性,都使得这些限制让人痛苦不堪。

在 2006 年,一名 Google 的工程师, Simon Stewart 开始基于这个项目进行开发,这个项目被命名为 WebDriver。此时,Google 早已是 Selenium 的重度用户,但是测试工程师们不得不绕过它的限制进行工具。Simon 需要一款能通过浏览器和操作系统的本地方法直接和浏览器进行通话的测试工具,来解决Javascript 环境沙箱的问题。WebDriver 项目的目标就是要解决 Selenium 的痛点。

跳到 2008 年。北京奥运会的召开显示了中国在全球的实力,大规模的次贷危机引发了“大萧条”以来美国最大的经济危机。但是当年最重要的故事是 Selenium 和WebDriver 的合并。Selenium 有着丰富的社区和商业支持,但 WebDriver 显然代表着未来的趋势。两者的合并为所有用户提供了一组通用功能,并且借鉴了一些测试自动化领域最闪光的思想。或许,关于两者合并的最好解释,是由 WebDriver 的开发者,在 2009 年 8 月 6 日发出的一封给社区的联合邮件中提到的:

为什么这两个项目要合并?一部分是因为 WebDriver 弥补了 Selenium 的一些短处(例如提供了一组很棒的 API,绕开浏览器的限制),一部分是因为 Selenium 弥补了 WebDriver 的一些短处(例如对浏览器更广泛的支持),还有一部分是因为 Selenium 的主要贡献者和我都认为这样能为用户提供最优秀的框架。

三、使用步骤

1.引入maven依赖

代码如下:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.3.0</version>
</dependency>

2.下载相关的浏览器和驱动(很重要,这里做过反爬处理)

安装过程

http://blog.gzcity.top/4792.html

3.核心代码

代码如下:

数据辅助类


import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import cn.ijiami.detection.helper.PrivacyPolicyHtmlHelper;

public class SeleniumUtils {

    public static void main(String[] args) {
        String url = "https://open.oppomobile.com/new/developmentDoc/info?id=10288";
        ChromeOptions options = new ChromeOptions();
        // 设置无头模式
//      options..setHeadless(Boolean.TRUE);
        // 设置无轨 开发时还是不要加,可以看到浏览器效果
        options.addArguments("-headless");
        options.addArguments("--disable-gpu");
        options.addArguments("--headless");
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
        // 不加载图片, 提升速度
        options.addArguments("--blink-settings=imagesEnabled=false");

        // 设置驱动
             System.setProperty("webdriver.chrome.driver","F:/tools/chromedriver.exe");

        WebDriver driver = new ChromeDriver(options);
        //设置超时
        driver.manage().timeouts().pageLoadTimeout(3, TimeUnit.SECONDS);
        driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);
        // 访问地址
        driver.get(url);

        String source = driver.getPageSource();

        System.out.println(source);
    }

}

发布者:小站,转转请注明出处:http://blog.gzcity.top/4795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年10月11日 18:20
下一篇 2022年11月9日 10:33

相关推荐

  • java方式调用apksigner对Apk 检查是否签名异常 v1、v2、v3、v4 (JAVA)

    apksigner apksigner 是 Google 官方提供的针对 Android Apk 签名和验证的专用工具,位于 Android SDK / build-tools / SDK 版本 / apksigner 。 无论是 apk 包 还是 jar 包,其本质都是 zip 格式的压缩包,如果只针对 v1 签名的话,两者的签名过程其实差不多。 apks…

    2022年12月9日
    3.4K10670
  • 【Vue学习总结】3.绑定数据和对象、循环数组渲染数据

    接上篇《2. Vue目录结构分析》 上一篇我们主要讲解了Vue的目录分析,本篇我们主要来介绍Vue的基础语法,绑定数据、对象,以及如何循环数组和渲染数据。 前几篇我使用的代码编辑器是HBuilder: HBuilder主要用来开发手机APP端的前端页面比较方便,但由于我们主要目的是开发Web端,暂时不以Web app为主。所以目前比较好用的还是Visual …

    2022年7月7日
    375300
  • CISP模拟测试三【CISE方向】

    祝老铁们早日拿证~ 1. 最小特权是软件安全设计的基本原则,某应用程序在设计时,设计人员给出了以下四种策略,其中有一个违反了最小特权的原则,作为评审专家,请指出是哪一个?(单选) A、A.软件在Linux下安装后,设定运行时使用nobody用户运行实例 B、B.软件的日志备份模块由于需要备份所有数据库数据,在备份模块运行时,以数据库备份操作员账号连接数据库 …

    2022年5月17日
    9.0K20840
  • WIN10 控制台cmd乱码及永久修改编码的解决办法

    WIN10 cmd控制台本来的编码是ANSI的,所以要求执行的批处理脚本编码格式也是ANSI才行,要不就两边统一都改成UTF-8处理(作为一个程序员,一般我都会统一成UTF-8编码格式),下面就介绍如何统一改成UTF-8编码格式   一、修改控制台CMD编码格式为UTF-8 我本机的系统环境: OS Name: Microsoft Windows 10 企业…

    2022年12月6日
    626340
  • Python实战:用Selenium webdriver 爬取网页数据 webdriver,爬取隐私政策地址

    Python实战:用Selenium webdriver 爬取网页数据 webdriver,爬取隐私政策地址 import os.path import requests import sys import time from selenium import webdriver from bs4 import BeautifulSoup from flask…

    2023年6月2日
    2.4K1170

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)