Java爬虫(一)
爬虫的简介
爬虫又叫网络爬虫,是一种运行在互联网上为了获取数据的自动化程序。
爬虫的简单分类
通用爬虫:百度爬取互联网上所有数据的爬虫叫做通用爬虫
垂直爬虫:为做数据分析而爬取特定数据的爬虫叫做垂直爬虫
分类的标准:根据数据量或者业务范围
在互联网上,大多数都是垂直爬虫,也就是爬取一定范围内的数据.
爬虫的运行原理
你自己如何获取网页上的数据?
打开一个网页
复制 标题/内容/图片
爬虫爬取一个页面的流程
指定一个URL
发起一个网络请求HTTP
得到一个HTML文档
解析HTML文档,获取自己想要的内容
爬虫爬取多个页面
将要爬取的多个URL放入list中
从list中依次拿取URL
发起一个网络请求HTTP
得到一个HTML文档
解析HTML文档,顺便解析出这个页面上的其他要爬取的URL
将上面顺便解析出来的URL存放到等待爬取的URL中
爬虫原理图
步骤说明:
将一个种子URL存放到队列中
从队列中读取一个URL
发起网络请求(上图4 5 6步)
3.1 域名解析,得到IP地址
3.2 发起HTTP请求
3.3 下载页面
解析HTML文档(上图7 8 9步)
解析HTML文档获取网页中所有URL
分页页面是否爬取过
如果没有爬取过就放入待爬取的URL队列中
分析网络爬虫开发技术
需求:爬取一个页面的内容
人的操作:找到URL输入到浏览器的地址栏 回车
浏览器帮我们发送了网络请求技术实现:如何发送网络请求
Socket (服务端/客户端)
HttpURLConnection (用来访问http链接)
HttpClient (操作网络请求更快的API)
三个技术点之间的关系:
Socket原生底层(ip、port) 除非我们自己开发游戏服务器
HttpURLConnection JDK提供的一套访问Http资源的API
HttpClient 基于HttpURLConnection高度封装,不需要关注网络请求的细节
人的操作:得到一个HTML文档二进制数据
浏览器帮我们解析了二进制数据,将网页按照HTML的标准呈现给我们技术实现:如何获取HTML页面
Inputstream 转化成 String 得到HTML纯文本数据
知道HTML文档格式,因为我们要进一步解析数据人的操作:人为的复制、粘贴操作
通过代码来解析HTML文档,获取有用的数据技术实现:如何解析数据
Document对象
Jsoup 为解析HTML而生
三个技术点之间的关系: Document对象是原生的API,Jsoup是更高级的框架。
总结:爬虫开发的两个核心技术
* Httpclient:帮助我们更好发送网络请求
* Jsoup:帮助我们更好的解析html。