Java網路爬蟲實操(7)

sinkinka發表於2018-03-05

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

大家好,我們平常瀏覽網頁經常會看到這樣的效果:滑鼠滾動到差不多底部的時候,才會載入新內容出來。然後一直滾就一直載入,比如外賣平臺上的評價資訊、社交平臺上的跟貼等等。

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

1) 準備工作

  • 更新爬蟲框架NetDiscovery,我們基於框架進行演示
  • 下載對應的瀏覽器driver程式,比如chrome的chromedriver,官方下載映象下載
  • 注意:driver程式一定要和瀏覽器版本匹配,建議直接裝最新的chrome和chromedriver(當前最新版本是2.36),如果是其他瀏覽器的話,也一樣的
  • 目標:開啟一個網頁視窗,顯示內容並最大化,往下拉後載入出新的內容,最終對當前網頁截圖,在本地生成一個影像檔案
    Java網路爬蟲實操(7)

2) 程式實現邏輯

  • 根據瀏覽器型別建立相應的物件new ChromeDriver(),並附上相應的action
  • 通過chromedriver驅動程式開啟本地的chrome瀏覽器
  • 用內建的js方法window.scrollBy()模擬人下拉網頁的操作
  • 用driver自帶的getScreenshotAs()實現對網頁截圖

3) 寫程式碼

Main類

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) {
        }
    }
}
複製程式碼

執行結果

儲存到本地的截圖圖片

4) 總結

seleinum本質上是一種自動化測試工具,在爬蟲技術中主要用來模擬人對瀏覽器的操作,理論上人通過滑鼠鍵盤操作的所有過程,都可以用程式程式碼模擬出來,然後獲取我們想要的網頁資料。

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

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

相關文章