js抓取网页内容(目标网站是以滚动页面的方式动态生成数据的网页 )

优采云 发布时间: 2021-09-11 23:09

  js抓取网页内容(目标网站是以滚动页面的方式动态生成数据的网页

)

  我们在抓取数据的时候,如果目标网站是在Js中动态生成数据,通过滚动来分页,那我们怎么抓取呢?

  比如网站像今天的头条:

  我们可以使用 Selenium 来做到这一点。尽管 Selenium 被设计用于 Web 应用程序的自动化测试,但它非常适合用于数据捕获。它可以轻松绕过网站 的反爬虫限制,因为 Selenium 直接在浏览器中运行。就像真正的用户在操作一样。

  使用Selenium,我们不仅可以抓取Js动态生成的网页,还可以抓取滚动分页的网页。

  首先我们使用maven来引入Selenium依赖:

  

    org.seleniumhq.selenium

    selenium-java

    2.47.1

  接下来,您可以编写代码进行捕获:

<p>import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import java.util.List;

import java.util.Random;

/**

 * 如何抓取Js动态生成数据且以滚动页面方式分页的网页

 * 以抓取今日头条为例说明:http://toutiao.com/

 * Created by ysc on 10/13/15.

 */

public class Toutiao {

    public static void main(String[] args) throws Exception{

        //等待数据加载的时间

        //为了防止服务器封锁,这里的时间要模拟人的行为,随机且不能太短

        long waitLoadBaseTime = 3000;

        int waitLoadRandomTime = 3000;

        Random random = new Random(System.currentTimeMillis());

        //火狐浏览器

        WebDriver driver = new FirefoxDriver();

        //要抓取的网页

        driver.get("http://toutiao.com/");

        //等待页面动态加载完毕

        Thread.sleep(waitLoadBaseTime+random.nextInt(waitLoadRandomTime));

        //要加载多少页数据

        int pages=5;

        for(int i=0; i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线