htmlunit 抓取网页(网站服务器防火墙直接拒绝访问网站防火墙模拟下浏览器)

优采云 发布时间: 2021-11-07 20:16

  htmlunit 抓取网页(网站服务器防火墙直接拒绝访问网站防火墙模拟下浏览器)

  我们上面的测试代码是直接请求的,部分网站服务器防火墙会直接拒绝访问。

  我们现在使用 htmlunit 来模拟浏览器请求;主要是添加一些header消息;

  

  这是我们用谷歌调试工具看到的请求头中的属性,当然也有返回的头信息;

  我们可以使用htmlunit来模拟浏览器执行,内置可以模拟IE、Firefox、Google;

  WebClient构造方法中有一个重载方法,可以添加指定的版本属性;

  

  完整代码:

  package com.hbk.htmlunit;

import java.io.IOException;

import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.BrowserVersion;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;

import com.gargoylesoftware.htmlunit.WebClient;

import com.gargoylesoftware.htmlunit.html.HtmlPage;

/**

*

* @author 黄宝康

*获取http://www.3dns.com.cn的源代码

*/

public class HtmlUnitTest

{

public static void main( String[] args )

{

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_45); // 实例化Web客户端

try {

HtmlPage page = webClient.getPage("http://www.3dns.com.cn/");

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

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

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

} catch (FailingHttpStatusCodeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

webClient.close(); // 关闭客户端,释放内存

}

}

}

  效果是一样的。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线