Java網絡爬蟲實操(7)

上一篇:Java網絡爬蟲實操(6)git

你們好,咱們日常瀏覽網頁常常會看到這樣的效果:鼠標滾動到差很少底部的時候,纔會加載新內容出來。而後一直滾就一直加載,好比外賣平臺上的評價信息、社交平臺上的跟貼等等。github

本篇文章介紹如何用seleinum技術模擬人對瀏覽器的操做chrome

1) 準備工做

  • 更新爬蟲框架NetDiscovery,咱們基於框架進行演示
  • 下載對應的瀏覽器driver程序,好比chrome的chromedriver,官方下載鏡像下載
  • 注意:driver程序必定要和瀏覽器版本匹配,建議直接裝最新的chrome和chromedriver(當前最新版本是2.36),若是是其餘瀏覽器的話,也同樣的
  • 目標:打開一個網頁窗口,顯示內容並最大化,往下拉後加載出新的內容,最終對當前網頁截屏,在本地生成一個圖像文件

2) 程序實現邏輯

  • 根據瀏覽器類型建立相應的對象new ChromeDriver(),並附上相應的action
  • 經過chromedriver驅動程序打開本地的chrome瀏覽器
  • 用內置的js方法window.scrollBy()模擬人下拉網頁的操做
  • 用driver自帶的getScreenshotAs()實現對網頁截圖

3) 寫代碼

Main類npm

package com.cv4j.netdiscovery.example;

import com.cv4j.netdiscovery.core.Spider;
import com.cv4j.netdiscovery.selenium.Browser;
import com.cv4j.netdiscovery.selenium.downloader.SeleniumDownloader;
import org.openqa.selenium.WebDriver;

public class TestSelenium {

    public static void main(String[] args) {
        //設置瀏覽器的驅動程序
        WebDriver driver = Browser.Chrome.init("example/chromedriver.exe");
        //建立downloader類和action
        ScrollAction scrollAction = new ScrollAction();
        SeleniumDownloader seleniumDownloader = new SeleniumDownloader(driver, scrollAction);
        //設置並啓動爬蟲
        Spider.create()
                .name("testseleinum")
                .url("https://www.ele.me/shop/1919756/rate")
                .downloader(seleniumDownloader)
                .run();
    }
}
複製代碼

SeleniumAction類瀏覽器

package com.cv4j.netdiscovery.example;

import com.cv4j.netdiscovery.selenium.SeleniumAction;
import com.cv4j.netdiscovery.selenium.Utils;
import org.openqa.selenium.WebDriver;

public class ScrollAction implements SeleniumAction {

    @Override
    public void execute(WebDriver driver) {
        try {
            //最大化
            driver.manage().window().maximize();
            //停頓2秒
            Thread.sleep(2000);
            //往下滾動200px
            Utils.scroll(driver, 200);
            //對當前網頁截屏
            Utils.taskScreenShot(driver, "D:\\work\\test.png");
        } catch(InterruptedException e) {
        }
    }
}
複製代碼

執行結果 bash

保存到本地的截屏圖片

4) 總結

seleinum本質上是一種自動化測試工具,在爬蟲技術中主要用來模擬人對瀏覽器的操做,理論上人經過鼠標鍵盤操做的全部過程,均可以用程序代碼模擬出來,而後獲取咱們想要的網頁數據。網絡

試用下來發現NetDiscovery框架對seleinum操做的支持還比較簡單,我會繼續關注。框架

下一篇:Java網絡爬蟲實操(8)ide

相關文章
相關標籤/搜索