首页 > 代码库 > 使用apache httpClient 通过get方式爬取网页,简易类操作。
使用apache httpClient 通过get方式爬取网页,简易类操作。
我是从官网下载的最新版本,windows操作系统选zip版本就行了。
在网上搜的一些资料,感觉提供的类有点旧了。新下载的包没有相关类,用法也不对。对了,我下载的版本是4.3.6。
所以只能自己搜索资料摸索,在下载的包中有相应的guide指导,还有一些现成的例子。
我自己写了一个简单的例子:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; /** * 最简单的HTTP客户端,用来演示通过GET方式访问某个页面 * * @author napoleonjk */ public class SimpleClient { public static void main(String[] args) { String uri = "http://localhost:8080/xxxxxxxx"; System.out.println(new SimpleClient().doGet(uri)); } public String doGet(String uri) { String result = ""; try { CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建HttpGet,将要请求的URL通过构造方法传入HttpGet对象。 HttpGet httpget = new HttpGet(uri); CloseableHttpResponse response = httpclient.execute(httpget); HttpEntity httpEntity = response.getEntity(); InputStream inputStream = httpEntity.getContent(); BufferedReader br = new BufferedReader(new InputStreamReader( inputStream)); String line = ""; while ((line = br.readLine()) != null) { result += "\n" + line; } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } }注意点:1.代理问题
一开始,想爬取百度的首页,老是报告以下错误,后来发现是因为公司使用的代理,需要进行代理设置。
java.net.UnknownHostException: www.baidu.com
我嫌麻烦,索性访问本地正在做的项目的地址,结果成功获取页面内容。
2.多线程并发访问,设置访问间隔,模拟登陆,数据存储
当你想把这个类写的完善时,以上是你需要考虑的问题。
使用apache httpClient 通过get方式爬取网页,简易类操作。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。