随笔

httpclient:
1、实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
GET:
POST:
PUT:
HEAD:
2、支持自动转向
301、302、307状态码支持自动转向
303不支持,需要重新输入url
3、支持 HTTPS 协议
加密的http,当客户端发送申请访问后,服务器端返回证书和公钥,客户端则生成对称密钥,然后通过公钥加密,
随后把加密密钥发给服务器,服务器再通过私钥解密,最后服务器与客户端利用对称密钥进行通讯
4、支持代理服务器
setProxy(proxy)

jsoup:
主要功能是对html页面的格式处理,可以获取任何一个标签下的属性和数据

redis:

布隆过滤器:

爬虫的步骤:
1、如何获得待爬取的网页数据
获取网页数据的办法有很多,这里使用的是java的httpclient:

  • 使用帮助类HttpClients创建CloseableHttpClient对象
  • 基于要发送的HTTP请求类型创建HttpGet或者HttpPost实例
  • 使用addHeader方法添加请求头部,诸如User-Agent, Accept-Encoding等参数
  • 对于POST请求,创建NameValuePair列表,并添加所有的表单参数.然后把它填充进HttpPost实体
  • 通过执行此HttpGet或者HttpPost请求获取CloseableHttpResponse实例
  • 从此CloseableHttpResponse实例中获取状态码,错误信息,以及响应页面等等
  • 最后关闭HttpClient资源

2、如何快速解析出有效数据
分为html页面和json页面:

  • html页面可以用jsoup工具类,将页面转化为Document,然后通过select或getElementsby*方法获取对应的标签或其属性
  • json页面可以直接将String转化为JsonObject或JsonArray,然后获取有效数据

3、如何去重
使用布隆过滤器去重,缺点就是有很小的概率会将不重复的数据判定为重复数据,而且这个概率随着数据的增大而增大,优点就是速度快

4、如何保存中间值
缓存保存在redis中,这就涉及redis的一些java方法了

Java笔记

  1. 字符串转url编码
    String  string="Learn English";
    try {
	string=URLEncoder.encode(string, "UTF-8");
	System.out.println(url);
    } catch (UnsupportedEncodingException e) {
	e.printStackTrace();
    }

你可能感兴趣的:(Java,技术)