觉得自己是时候该沉淀了。。。说起来,自学Java网络爬虫也有两个月了,期间走了很多弯路,我也不禁对Java和Python这两门同样都能搞爬虫的语言但与之相关的文档与书籍的差别感到惊讶,对于Java来说,目前我知道的有关介绍Java网络爬虫这方面的书籍只有《自己动手写网络爬虫》,对于其中的内容,我觉得是晦涩难懂,不适合入门,并且内容相对来说感觉有点过时。

我觉得我必须开个博客专栏,对于之后想要入门Java网络爬虫的兄弟姐妹们,好减少一点他们在学习途中的迷茫,我期间是迷茫了好几次,但最终还是坚持下来了。对于Java和Python来说,很多人刚开始都不知道该选择哪门语言,在此我也不多做评价,有需要的请百度,或知乎。

其实我个人觉得,除非是特别情况,还是选择Python爬虫比较好。


请求URL

在这里我先说一下,对于一般需求性的网络爬虫来说,使用HttpClient请求页面,使用Jsoup解析页面,提取自己想要的数据,基本就可以开始“爬”,当初我就是使用这两个包,加上模拟请求和URL请求队列,抓取了豆瓣影评,四页共50条数据(虽然数据有点少,但总算是抓下来了)。

在学习的途中,由于HttpClient这个项目已经更新,但网络上的资料陈旧,用的是HttpClient过时的包,所以我也是摸索了好久,在这里给大家列出最新的用法~对于HttpClient这个第三方库有疑问的可以自行百度,我们在写项目的时候需要引入,对于怎么在IDEA中加入第三方库,我的另一篇博客Java学习笔记–整合数据库中有详细说明,这里我只演示它的用法。

HttpClient给我们提供了非常强大的请求URL的功能,他可以用来模拟浏览器行为,可以进行网站请求头的添加和修改来完成模拟登录,可以获得服务器响应过来的实体消息,是进行URL请求的一个利器。对于HTTP状态码和Web与服务器之间进行的交互不清楚的,推荐一本书《图解HTTP》,这也是进行网络爬虫所要掌握的基础知识。

接下来给大家上代码,多说无益。

/*** Created by paranoid on 17-1-19.*/
import org.apache.http.Header;
import org.apache.http.HttpEntity;
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;
import org.apache.http.util.EntityUtils;public class HttpCLientDemo {public static void main (String[] args) throws Exception {// 创建默认的客户端实例CloseableHttpClient httpClient = HttpClients.createDefault();// 创建get请求实例HttpGet httpget = new HttpGet("http://www.baidu.com");System.out.println("executing request " + httpget.getURI());try {// 客户端执行get请求返回响应CloseableHttpResponse response = httpClient.execute(httpget);// 服务器响应状态行System.out.println(response.getStatusLine().toString());Header[] heads = response.getAllHeaders();System.out.println(response.getHeaders("Content-Type"));// 打印所有响应头for(Header h:heads){System.out.println(h.getName()+":"+h.getValue());}} finally {httpClient.close();}}
}

返回响应

使用上面代码我们已经成功请求到URL,接下来需要将整个页面的源码抓取下来,提取我们所需要的数据。

这时候就要使用HttpClient返回实体的内容。

import org.apache.http.Header;
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;
import org.apache.http.util.EntityUtils;import java.io.IOException;import static java.lang.System.out;public class HttpClientDemo {public static void main(String[] args){//创建客户端CloseableHttpClient closeableHttpClient = HttpClients.createDefault();//创建请求Get实例HttpGet httpGet = new HttpGet("https://www.baidu.com");//添加头部信息模拟浏览器访问httpGet.setHeader("Accept", "text/html,application/xhtml+xml," +"application/xml;q=0.9,image/webp,*/*;q=0.8");httpGet.setHeader("Accept-Encoding", "gzip, deflate, sdch, br");httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.8");httpGet.setHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" +" (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");try {//客户端执行httpGet方法,返回响应CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpGet);//得到服务响应状态码if(closeableHttpResponse.getStatusLine().getStatusCode() == 200)   //得到响应实体String entity = EntityUtils.toString (closeableHttpResponse.getEntity(), "utf-8");}else{//如果是其他状态码则做其他处理}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

Java网络爬虫(一)--使用HttpClient请求资源并抓取响应相关推荐

  1. Java网络爬虫学习记录(请求基础篇)

    目录 个人实验遇见错误集: 一.javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX ...

  2. Python3网络爬虫实战-38、动态渲染页面抓取:Splash的使用

    Splash 是一个 JavaScript 渲染服务,是一个带有 HTTP API 的轻量级浏览器,同时它对接了 Python 中的 Twisted和 QT 库,利用它我们同样可以实现动态渲染页面的抓 ...

  3. Python3网络爬虫实战-27、Requests与正则表达式抓取猫眼电影排行

    本节我们利用 Requests 和正则表达式来抓取猫眼电影 TOP100 的相关内容,Requests 相较于 Urllib 使用更加方便,而目前我们还没有系统学习 HTML 解析库,所以可能对 HT ...

  4. 【Python】Python3网络爬虫实战-27、Requests与正则表达式抓取猫眼电影排行

    本节我们利用 Requests 和正则表达式来抓取猫眼电影 TOP100 的相关内容,Requests 相较于 Urllib 使用更加方便,而目前我们还没有系统学习 HTML 解析库,所以可能对 HT ...

  5. 网络爬虫学习1 - 使用 requests.get(url) 抓取网页

    网络爬虫MOOC学习打卡 - 第一天 文章目录 网络爬虫MOOC学习打卡 - 第一天 一.使用 requests.get(url) 抓取网页 1.从cmd中打开idle 2.调用requests类 - ...

  6. Python3网络爬虫之Scrapy框架实现招聘数据抓取

    项目需求: 某招聘网上面有公司发布的的各种工作岗位,进入首页 https://careers.tencent.com/ 后可见 到一个搜索框,如下图所示: 在搜索框输入岗位名称,跳转到如下图所示页面, ...

  7. 用mac的python写网络爬虫_在mac下使用python抓取数据

    2015已经过去,这是2016的第一篇博文! 祝大家新年快乐! 但是我还有好多期末考试! 还没开始复习,唉,一把辛酸泪! 最近看了一遍彦祖的文章叫做 所以自己也想小试牛刀.于是便开始动手写,但初次接触 ...

  8. Python爬虫实践:从中文歌词库抓取歌词

    利用BeautifulSoup库构建一个简单的网络爬虫,从中文歌词库网站抓取凤凰传奇所有曲目的歌词(http://www.cnlyric.com/geshou/1927.html). from url ...

  9. java 网络爬虫 正则表达式_【干货】Java网络爬虫基础知识

    原标题:[干货]Java网络爬虫基础知识 引言 Java 网络爬虫具有很好的扩展性可伸缩性,其是目前搜索引擎开发的重要组成部分.例如,著名的网络爬虫工具 Nutch 便是采用 Java 开发,该工具以 ...

  10. Java网络爬虫该如何学习

    文章目录 引言 怎么入门网络爬虫 课程特色 学完本课程能收获什么 引言 互联网以及移动技术的飞速发展,使得全球数据量呈现前所未有的爆炸式增长态势.例如,用户在互联网上的搜索数据.交易数据.评论数据.社 ...

最新文章

  1. 计算机视觉大作业 抓取手势类型集_CS231n第一周[任务1]计算机视觉发展历史以及一些计算机视觉任务概念...
  2. Gcd HDU - 6545 (基础数论)
  3. 詹金斯搭建_与詹金斯一起连续交付Heroku
  4. 【转】系统管理员之企业生存守则
  5. 计算机组成原理—虚拟存储器的分类
  6. 疫情趋势下,远程控制软件成为刚需,ToDesk or 向日葵,哪一款最好用?
  7. 【物联网】云计算平台架构与模式简述
  8. 分不清蓝牙适配器、蓝牙接收器和蓝牙发射器?伦茨科技为你讲解
  9. 浅谈Windows API编程 (这个经典)
  10. 使用python itchat模块实现微信聊天机器人_code
  11. IOS上传app store审核截图规格要求
  12. ubuntu16.04 查看系统可用内存
  13. 大数据分析6个核心技术
  14. TopCoder Arena 插件配置(1)Greed 2.0
  15. php gif裁剪,ci裁剪gif图片如何让gif保持是动态的。
  16. 安卓原生应用开发!一起刷完了这份1307页的安卓面试宝典吧,值得收藏!
  17. ODI Studio(问题7)ORA-00932:数据类型不一致--BLOB
  18. 机械工业出版社计算机组成原理答案,计算机组成原理
  19. pgsql按varchar字段排序
  20. 阿里云盘的几个搜索平台(自用)

热门文章

  1. macOS 开发 - 使用 ScreenSaverView 制作屏幕保护程序
  2. 射频工程师——中兴笔试题
  3. 光纤接入实现模式 P2P和PON。PON原理介绍。
  4. 互联网监控直播-LiveGBS分发出RTMP、HLS、FLV、RTSP视频流说明介绍
  5. 对接丰网查询物流信息
  6. 让Thread#stop方法无法终止你的线程
  7. 【Vue组件】从零开始实现一个支持插入自定义表情的评论组件
  8. 使用gitee部署静态网页
  9. 单片机外围电路设计攻略
  10. 项目经理也分三六九等,初级项目经理和高级项目经理的区别