操作方法:java爬虫工具htmlunit爬取静动态示例(附带亲测可用所有jar包)

优采云 发布时间: 2022-09-23 19:12

  操作方法:java爬虫工具htmlunit爬取静动态示例(附带亲测可用所有jar包)

  本文提供的所有jar包均非maven导入。您需要自己了解如何导入 pom。

  抓取静态页面

  爬取静态页面的基础包:htmlunit基础jar包

  有些人可能还需要这两个包:

  jetty-websocket.jar

  jsoup.jar

  以上所有jar包都导入后,来hello word。

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

// 实例化Web客户端

WebClient webClient = new WebClient();

// 爬取https网站需要设置为true

webClient.getOptions().setUseInsecureSSL(true);

// 解析获取页面

HtmlPage page = webClient.getPage("https://www.baidu.com");

// 获取Html

System.out.println("网页html:" + page.asXml());

System.out.println("====================");

// 获取文本

System.out.println("网页文本:" + page.asText());

}

  到目前为止,以上功能可以抓取静态页面。绝对没问题。

  抓取动态页面

  爬取动态页面基础包:htmlunit爬取动态页面jar包

  爬取动态界面示例演示

  

  import com.gargoylesoftware.htmlunit.BrowserVersion;

import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;

import com.gargoylesoftware.htmlunit.WebClient;

import com.gargoylesoftware.htmlunit.html.HtmlPage;

import org.apache.commons.logging.LogFactory;

import org.junit.Test;

import java.util.logging.Level;

public class GetSongDemo {

@Test

public void show() throws Exception {

readHtml("https://y.qq.com/n/yqq/song/000VWfXv0lIJyw.html");

}

public static void readHtml(String url) throws Exception {

// 不显示异常日志

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log",

"org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit")

.setLevel(Level.OFF);

java.util.logging.Logger.getLogger("org.apache.commons.httpclient")

.setLevel(Level.OFF);

WebClient wc = new WebClient(BrowserVersion.BEST_SUPPORTED);

<p>

wc.setJavaScriptTimeout(10000);

//接受任何主机连接 无论是否有有效证书

wc.getOptions().setUseInsecureSSL(true);

//设置支持javascript脚本

wc.getOptions().setJavaScriptEnabled(true);

//js运行错误时不抛出异常

wc.getOptions().setThrowExceptionOnScriptError(false);

//设置连接超时时间

wc.getOptions().setTimeout(100000);

wc.getOptions().setDoNotTrackEnabled(false);

//当HTTP的状态非200时是否抛出异常

wc.getOptions().setThrowExceptionOnFailingStatusCode(false);

wc.getOptions().setActiveXNative(false);

//是否启用CSS

wc.getOptions().setCssEnabled(false);

//很重要,设置支持AJAX

wc.setAjaxController(new NicelyResynchronizingAjaxController());

HtmlPage page = wc.getPage(url);

Thread.sleep(10000);

System.out.println(page.asXml());

System.out.println(page.asText());

}

}</p>

  技巧:如何爬取动态网页的数据?Python实战案例(python爬虫动态数据获取)

  如何从动态网页抓取数据? Python实战案例(python爬虫动态数据获取)

  前言

  一、什么是动态网页

  所谓动态网页是指相对于静态网页的一种网页编程技术。对于静态网页,随着html代码的生成,页面的内容和显示效果基本不会改变——除非你修改了页面代码。动态网页并非如此。虽然页面代码没有改变,但是显示的内容会随着时间、环境或数据库操作的结果而改变。 ——来源百度百科

  

  动态网页具有工作量减少、内容更新快、可完成功能多等特点。

  二、什么是 AJAX

  随着人们对动态网页加载速度的要求越来越高,AJAX 技术应运而生,并成为许多网站的首选。 AJAX 是一种用于创建快速和动态网页的技术,它通过在后台与服务器交换少量数据来实现网页的异步更新。这意味着无需重新加载整个网页即可更新网页的某些部分。

  三、如何爬取AJAX动态加载网页

  1.解析接口

  只要有数据发送,就一定有请求发送到服务器。我们只需要找出它悄悄加载的页面的真实请求。特点:爬取速度快,爬取数据干净,部分网站解析困难。

  

  2.硒

  什么是硒?它最初是一个自动化测试工具,但已经被广泛的用户爬取。是一个可以用代码操作浏览器的工具,比如控制浏览器的下滑,模拟鼠标点击等。特点:代码比较简单,爬取速度慢,ip容易被封.

  项目实践

  一、分析界面

  既然如此,我们来启动爬虫的正确姿势,先用解析接口的方法来写爬虫。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线