java使用selenium-chrome-driver实现简单的本地爬虫

主要是使用selenium-chrome-driver和jsoup两个框架来实现本地爬虫
话不多说直接上代码
作者这里使用的是谷歌浏览器,所以我们需要一个谷歌浏览器的驱动chromedriver.exe(之后源码中会有)

        ChromeOptions options = new ChromeOptions();//创建浏览器参数
        //设置从ChromeDriver中获取属性(处理反爬机制)
        //设置谷歌浏览器用户数据目录
        options.addArguments("--user-data-dir=" + "D:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data");
        options.addArguments("--disable-gpu");
        options.addArguments("start-maximized");
        options.addArguments("enable-automation");
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-infobars");
        options.addArguments("--disable-dev-shm-usage");
        options.addArguments("--disable-browser-side-navigation");

        options.addArguments("--proxy-server=" + proxyServer);

这里重点说明一下两个参数
1、–user-data-dir,这个参数指的是读取你本地谷歌浏览器的用户数据,指定了这个参数浏览器可以获取用户之前的浏览信息如:登录信息。
2、–proxy-server=,这个参数可以指定你本地的一个梯子。

	ChromeDriver driver = new ChromeDriver(options);

创建一个谷歌浏览器的driver
当运行这一行代码的时候,会打开一个谷歌浏览器

	driver.get("xxxx");

这一行执行就好比你在浏览器中输入了一个网址。
java使用selenium-chrome-driver实现简单的本地爬虫_第1张图片

我们这里以Pivix图片网站为例
在通过Jsoup可以操作页面元素

        //使用Jsoup来解析页面
        Document document = Jsoup.parse(driver.getPageSource());
        //根据class来获取也没上的元素
        Elements elements = document.body().getElementsByClass("ranking-item");

获取到Elements 之后就可以读取到图片的url地址了,之后就是下载图片到本地,这里就不做过多的代码解释(后面会提供源码)
java使用selenium-chrome-driver实现简单的本地爬虫_第2张图片
这是下载后的图片,每个图片有一个原图和一个压缩图可以下载。
大致流程是这样,后面在介绍一下如何让浏览器自动下拉到底部加载更多

    private static void doDropDown(ChromeDriver driver) { //下拉加载更多
        String height = driver.executeScript("return document.body.scrollHeight;").toString();
        // 按下键盘的END键滑动键盘,下拉页面
        Actions actions = new Actions(driver);
        actions.sendKeys(Keys.END).perform();
    }

driver可以直接执行js脚本,通过脚本获取页面的高度,也可以直接指向下滑的操作。
源码地址

你可能感兴趣的:(java,爬虫,selenium)