使用Selenium(WebDriver)滑動頁面,爬取下拉加載的信息

爬某些視頻網站的時候,有些視頻列表是下拉加載的,js請求參數都是加密或者混淆的,要想逆向也比較麻煩;

有個簡單方法,就是使用Selenium包,Selenium有Java的API也有Python的,下面說一下Java使用Selenium怎麼下拉滑動頁面,動態加載信息;

一,引入依賴

      <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.53.1</version>
        </dependency>
		// 請求某視頻網站地址
		chromeDriver.get("http://www.xxxxxx.com");
        Thread.sleep(10000);


        for (int i = 0; i < 50; i++) {
			// 執行js腳本返回當前頁面高度
            String height = chromeDriver.executeScript("return document.body.scrollHeight;").toString();

            // 按下鍵盤的END鍵滑動鍵盤,下拉頁面
            Actions actions = new Actions(chromeDriver);           
            actions.sendKeys(Keys.END).perform();
            try {
                Thread.sleep(random.nextInt(3000) + 2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
			//下滑完了,再次檢查當前頁面高度,如果滑到底部,則兩次高度相同
            String newHeight = chromeDriver.executeScript("return document.body.scrollHeight;").toString();
            if (height.equals(newHeight)) {
                break;
            }
        }

這個方法還是挺管用,不過有些網站可能會檢測到,比如某頭條,用這方法行不通,但是可以寫個固定值一直循環的發送END鍵,也可以

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章