您的位置首页百科问答

如何抓取HTML页面及HttpClient使用

如何抓取HTML页面及HttpClient使用

eclipse工具会帮我们下载好HttpClient包,我们直接导入使用就好

2.我们使用HttpClient发送Get请求,并接受响应,将特定的页面下载。

错误的写法 {

//先创建HttpClient对象

CloseableHttpClient httpClient = new HttpClients.createDefault();1212

这里用这个写法创建HttpClient对象会返回403forbidden,UA字段存在问题,所有我们要对UA字段进行设置,用下面的写法。

}

创建HttpClient对象

HttpClientBuilder builder = HttpClients.custom();

//设置UA字段,UA标识浏览器身份

builder.setUserAgent("Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:0.9.4)");

CloseableHttpClient httpclient = builder.build();1234512345

//再创建HttpGet对象(url为需要下载网页的地址)

HttpGet httpGet = new HttpGet(url);`

//执行get请求

CloseableHttpResponse response = httpClient.execute(httpGet);`

//获得响应实体

HttpEntity entity = response.getEntity();

String rawHtml = EntityUtils.toString(entity);`

//将抓取到的网页打印

System.out.println(rawHtml);`123456789123456789

解析抓取到的网页

1.解析网页需要HtmlCleaner包,我们仍旧在pom.xml文件中配置,

点击找到此包的信息复制到标签下

2.实例

//先获取要解析的网页

//将抓取的网页传给rawHtml

String rawHtml = page.getRawHtml();

//创建cleaner对象

HtmlCleaner hc = new HtmlCleaner();

//创建树的根标记实例

TagNode rootTagNode = hc.clean(rawHtml);

//定义要解析的元素或属性

String xpath = "//*[@id='h1title']";

//执行,获得数组

final Object[] objArr = rootTagNode.evaluateXPath(xpath);

//输出解析结果

if (objArr!=null) {

for (Object obj : objArr) {

if(obj instanceof TagNode) {

TagNode node = (TagNode)obj;

System.out.println(node.getText().toString());

}

}

}12345678910111213141516171819201234567891011121314151617181920

XPath是一门在XML文档中查找信息的语言,在XML文档中对元素和属性遍历,xpath的书写格式可以自己找一下教程。