htmlunit 抓取网页(:JavaHTML解析器的基本知识点总结(一) )

优采云 发布时间: 2022-04-10 12:20

  htmlunit 抓取网页(:JavaHTML解析器的基本知识点总结(一)

)

  (4)支持代理

  (5)支持自动cookie管理等。

  Java爬虫开发是应用最广泛的网页获取技术。它具有一流的速度和性能。它在功能支持方面相对较低。不支持JS脚本执行、CSS解析、渲染等准浏览器功能。推荐用于快速访问网页。无需解析脚本和 CSS 的场景。

  示例代码如下:

  package cn.ysh.studio.crawler.httpclient;

import org.apache.http.client.HttpClient;

import org.apache.http.client.ResponseHandler;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.BasicResponseHandler;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;

/**

 * 基于HtmlClient抓取网页内容

 *

 * @author www.yshjava.cn

 */

public class HttpClientTest {

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

//目标页面

String url ="http://www.jjwxc.net/";

//创建一个默认的HttpClient

HttpClient httpclient =new DefaultHttpClient();

try{

//以get方式请求网页http://www.yshjava.cn

HttpGet httpget =new HttpGet(url);

//打印请求地址

System.out.println("executing request "+ httpget.getURI());

//创建响应处理器处理服务器响应内容

ResponseHandler responseHandler = new BasicResponseHandler();

//执行请求并获取结果

String responseBody = httpclient.execute(httpget, responseHandler);

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

String htmlStr=null; 

if(responseBody != null) {  

//                htmlStr=new String(EntityUtils.toString(responseBody));  

//                htmlStr=new String(htmlStr.getBytes("ISO-8859-1"), "gbk"); // 读取乱码解决  

responseBody=new String(responseBody.getBytes("ISO-8859-1"), "gb2312");

            } 

System.out.println(responseBody);

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

}finally{//关闭连接管理器

httpclient.getConnectionManager().shutdown();

            }

}

}

  汤

  jsoup 是一个 Java HTML 解析器,可以直接解析一个 URL 地址和 HTML 文本内容。它提供了一个非常省力的 API,用于通过 DOM、CSS 和类似 jQuery 的操作方法获取和操作数据。

  网页获取解析速度快,推荐。

  主要功能如下:

  1. 从 URL、文件或字符串解析 HTML;

  2. 使用 DOM 或 CSS 选择器来查找和检索数据;

  3. 可以操作 HTML 元素、属性、文本;

  示例代码如下:

  包cn.ysh.studio.crawler.jsoup;

  导入 java.io.IOException;

  导入 org.jsoup.Jsoup;

  /**

  * 基于 Jsoup 抓取网页内容

  * @作者

  */

  公共类 JsoupTest {

  公共静态 void main(String[] args) 抛出 IOException{

  //目标页面

  字符串 url = "";

  //使用Jsoup连接目标页面,执行请求,获取服务器响应内容

  字符串 html =Jsoup.connect(url).execute().body();

  //打印页面内容

  System.out.println(html);

  }

  }

  html单元

  htmlunit 是一个开源的java页面分析工具。阅读完页面后,可以有效地使用htmlunit分析页面上的内容。该项目可以模拟浏览器的操作,称为java浏览器的开源实现。这个没有界面的浏览器运行速度非常快。使用 Rhinojs 引擎。模拟js运行。

  网页获取和解析速度快,性能更好。推荐用于需要解析网页脚本的应用场景。

  示例代码如下:

  package cn.ysh.studio.crawler.htmlunit;

import com.gargoylesoftware.htmlunit.BrowserVersion;

import com.gargoylesoftware.htmlunit.Page;

import com.gargoylesoftware.htmlunit.WebClient;

/**

 * 基于HtmlUnit抓取网页内容

 * 

 * @author www.yshjava.cn

 */

public class HtmlUnitSpider {

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

// 目标网页

String url = "http://www.jjwxc.net/";

// 模拟特定浏览器FIREFOX_3

WebClient spider = new WebClient(BrowserVersion.FIREFOX_3);

// 获取目标网页

Page page = spider.getPage(url);

// 打印网页内容

System.out.println(page.getWebResponse().getContentAsString());

// 关闭所有窗口

// spider.closeAllWindows();

spider.close();

}

}

  瓦蒂

  Watij(发音为 wattage)是一个用 Java 开发的 Web 应用程序测试工具。鉴于 Watij 的简单性和 Java 语言的强大功能,Watij 使您能够在真实浏览器中自动测试 Web 应用程序。因为调用本地浏览器,所以支持CSS渲染和JS执行。

  网页访问速度一般,IE版本太低(6/7)可能会导致内存泄漏。

  示例代码如下:

  包cn.ysh.studio.crawler.ie;

  导入 watij.runtime.ie.IE;

  /**

  * 基于 Watij 抓取网页内容,仅在 Windows 平台上

  *

  * @作者

  */

  公共类 WatijTest {

  公共静态无效主要(字符串[] s){

  //目标页面

  字符串 url = "";

  // 实例化 IE 浏览器对象

  IE 即 = 新的 IE();

  尝试 {

  // 启动浏览器

  即.start();

  // 进入登陆页面

  即.goTo(url);

  // 等待页面加载

  即.waitUntilReady();

  // 打印页面内容

  System.out.println(ie.html());

  } 捕捉(异常 e){

  e.printStackTrace();

  } 最后 {

  try {//关闭IE浏览器

  即关闭();

  } 捕捉(异常 e){

  }

  }

  }

  }

  硒

  Selenium 也是一个用于 Web 应用程序测试的工具。Selenium 测试直接在浏览器中运行,就像真正的用户一样。支持的浏览器包括 IE、Mozilla Firefox、Mozilla Suite 等。该工具的主要功能包括: 测试与浏览器的兼容性 - 测试您的应用程序是否在不同的浏览器和操作系统上运行良好。测试系统功能 - 创建回归测试以验证软件功能和用户需求。支持动作的自动记录和自动生成。Net、Java、Perl 和其他不同语言的测试脚本。Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的验收测试工具。

  网页抓取速度慢,对于爬虫来说不是一个好的选择。

  示例代码如下:

  package cn.ysh.studio.crawler.selenium;

import org.openqa.selenium.htmlunit.HtmlUnitDriver;

/**

 * 基于HtmlDriver抓取网页内容

 * 

 * @author www.yshjava.cn

 */

public class HtmlDriverTest {

public static void main(String[] s) {

// 目标网页

String url = "http://www.jjwxc.net/";

HtmlUnitDriver driver = new HtmlUnitDriver();

try {

// 禁用JS脚本功能

driver.setJavascriptEnabled(false);

// 打开目标网页

driver.get(url);

// 获取当前网页源码

String html = driver.getPageSource();

// 打印网页源码

System.out.println(html);

} catch (Exception e) {

// 打印堆栈信息

e.printStackTrace();

} finally {

try {

// 关闭并退出

driver.close();

driver.quit();

} catch (Exception e) {

}

}

}

}

  网络规范

  具有支持脚本执行和 CSS 呈现的界面的开源 Java 浏览器。平均速度。

  示例代码如下:

  package cn.ysh.studio.crawler.webspec;

import org.watij.webspec.dsl.WebSpec;

/**

 * 基于WebSpec抓取网页内容

 *

 * @author www.yshjava.cn

 */

public class WebspecTest {

public static void main(String[] s){

//目标网页

String url ="http://www.jjwxc.net/";

//实例化浏览器对象

WebSpec spec =new WebSpec().mozilla();

//隐藏浏览器窗体

        spec.hide();

        //打开目标页面

        spec.open(url);

        //打印网页源码

        System.out.println(spec.source());

        //关闭所有窗口

        spec.closeAll();

       }

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线