如何抓取HTML页面及HttpClient使用

 我来答
爱染年
2016-11-21 · 知道合伙人互联网行家
爱染年
知道合伙人互联网行家
采纳数:4751 获赞数:7830
国家励志奖学金获得者

向TA提问 私信TA
展开全部
1.创建如图结构的文件夹(pom.xml文件自行百度创建)

2.导入Existing Maven Project

->生成如图所示项目

使用HttpClient抓取网页
1.首先要配置pom.xml文件,需要将HttpClient包加载进来
->访问www.mvnrepository.com
->搜索HttpClient,找到如图信息

->复制粘贴到pom.xml文件中(注意需要添加一个<dependencies></dependencies>标签),如图

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文件中配置,

点击找到此包的信息复制到<dependencies></dependencies>标签下
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的书写格式可以自己找一下教程。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式