网络爬虫框架的搭建以及使用HttpClient抓取解析网页的详细步骤
2016-03-12 11:29
911 查看
我们首先使用eclipse中的导入maven的方法搭建爬虫框架
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();
这里用这个写法创建HttpClient对象会返回403forbidden,UA字段存在问题,所有我们要对UA字段进行设置,用下面的写法。
}
创建HttpClient对象 HttpClientBuilder builder = HttpClients.custom(); //设置UA字段,UA标识浏览器身份 builder.setUserAgent("Mozilla/5 4000 .0(Windows;U;Windows NT 5.1;en-US;rv:0.9.4)"); CloseableHttpClient httpclient = builder.build();
//再创建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);`
解析抓取到的网页
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()); } } }
XPath是一门在XML文档中查找信息的语言,在XML文档中对元素和属性遍历,xpath的书写格式可以自己找一下教程。
相关文章推荐
- Linux 网络编程 套接字选项
- 监测手机网络状态变化
- linux安全之TCP Wrappers
- 基于空间金字塔池化的卷积神经网络物体检测
- http post 请求
- 【概念】协议理解之HTTPS
- backbonefast Uplinkfast portfast 解释
- CentOS和Ubuntu系统简要网络配置及常用网络管理工具汇总
- http、TCP/IP协议与socket之间的区别
- HttpURLConnection 发送post请求。并将结果以JSONObject对象返回的轮子
- [国嵌攻略][135][网络子系统深度分析]
- 网络爬虫个人博客
- CNN卷积神经网络
- 关于VMware网络连接模式详解:桥接、NAT、host-only
- HTTP工作流程
- OKHttp源码解析
- UESTC 1143 传输数据 网络流 最大流 Dinic
- Android开发中实现https校验
- 计算机网络相关知识
- TCP的三次握手和四次撒手