1.httpclient与jsoup简介
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
httpclient功能有:
1.实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
2.支持自动转向
3.支持 HTTPS 协议
4.支持代理服务器等
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup功能有:
1.从一个URL,文件或字符串中解析HTML;
2.使用DOM或CSS选择器来查找、取出数据;
3.可操作HTML元素、属性、文本;
2.httpclient和jsoup共同使用
httpClient 属于专业的抓取网页的库,可以设置代理,抓取失败可以重试抓取。jsoup也可以直接抓取网页,但是在抓取上,jsoup比较弱,API简单,功能也简单,主要是扩展htmlparser的功能吧,解析html。测试过程中jsoup抓取页面经常报错(time out等等)。所以使用httpclient抓取网页,然后使用jsoup解析html。
3.maven依赖
httpclient:
1 | <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> |
jsoup:
1 | <dependency> |
4.使用httpclient抓取网页步骤
1.创建httpclient对象
2.创建请求对象,如果是get请求就创建 Httpget,如果是post就创建 HttpPost,并且参数传url地址字符串
3.发送请求,使用 httpClient 的 execute 方法发送,参数传请求对象,返回一个 HttpResponse 对象
4.获得页面内容,调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容
5.释放连接,无论执行方法是否成功,都必须释放连接