Selenium(二)

6 阅读1分钟

驱动下载developer.chrome.com/docs/chrome…

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

        System.setProperty("webdriver.chrome.driver",
                "src/main/resources/ChromeManager/chromedriver-win64/chromedriver.exe");

        ChromeOptions options = new ChromeOptions();
        String ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
        options.addArguments("user-agent=" + ua);

        ChromeDriver driver = new ChromeDriver(options);
        //页面等待
        driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
        driver.get("https://www.damai.cn/");
        //隐式等待
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        //脚本等待
        driver.manage().timeouts().setScriptTimeout(30, TimeUnit.SECONDS);

        WebElement element = driver.findElement(By.cssSelector(".dm-content-wrap .dm-content .box"));
        List<WebElement> elements = element.findElements(By.tagName("a"));

        elements.forEach((key) -> {
            List<WebElement> img = key.findElements(By.tagName("img"));
            img.forEach((keys) ->
                    System.out.println(keys.getAttribute("src"))
            );
        });

        driver.quit();

system.setProperty

配置环境,重要是在配置上,比如爬虫就是将驱动,配置为webdriver.chrome.driver,这个一般官网会指定名称,换句话这是必须的。为什么不使用webManager的maven包管理驱动,最重要的原因是版本问题。但是又引发了另一个问题,如果直接下载下来,网站又很容易探测到。因此必须总结。

  • facebook网站就是多次登录后封禁账号,还有社团与个人混合列表。
  • 当当,虽然是纯CSS实现反爬,但是时间控度极其不太掌握

因此,反爬与爬虫是相向而行。

class.forName

类加载器,也就是说加载第三方文件必须是类。System.property加载第三方不一定是类

DriverManager.getConnection

数据库连接工具

ServiceLoader.load

服务注册工具,它是Java的SPI工具。当加载类的时候,必须执行迭代器的next方法。

下一期,commons-io与httpclient