js 抓取网页内容(【手语服务,助力沟通无障碍】(12月29日19:00) )

优采云 发布时间: 2021-12-29 10:07

  js 抓取网页内容(【手语服务,助力沟通无障碍】(12月29日19:00)

)

  【手语服务助沟通障碍】12月29日19:00现场报名>>>

  

  我们在抓取数据的时候,如果目标网站以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人工客服


线