scrapy分页抓取网页(如何抓取目标网站是以Js的方式动态生成数据的网页)

优采云 发布时间: 2022-02-07 12:14

  scrapy分页抓取网页(如何抓取目标网站是以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人工客服


线