网页数据抓取怎么写(代码也可以从我的开源项目HtmlExtractor中获取。。 )

优采云 发布时间: 2021-12-14 07:16

  网页数据抓取怎么写(代码也可以从我的开源项目HtmlExtractor中获取。。

)

  代码也可以从我的开源项目HtmlExtractor获取。

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

  类似于今日头条网站:

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

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

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

  < dependency >

< groupId >org.seleniumhq.selenium

< artifactId >selenium-java

< version >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人工客服


线