爬某些视频网站的时候,有些视频列表是下拉加载的,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键,也可以