爬某些視頻網站的時候,有些視頻列表是下拉加載的,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鍵,也可以