网络爬虫的基本概念
网络爬虫是什么?
网络爬虫是一种运行在互联网上用来数据的自动化程序和脚本
分解出三个点:
* 互联网上都有哪些数据?
* 形形色色的网站组成(新闻|贴吧|知道|音乐|图片|视频|地图|文库)
* 电商网站(用户|商品|订单|支付|物流|评论|分享)
* 微博(发送信息|转发|点赞|关注|被关注)
* 怎么去获取?通过什么样的技术手段去获取
* 网站的本质就是服务端程序,通过客户端(浏览器)和服务端尽心进行交互。
* HTTP协议(HTTP GET 或者Post )
* 开发网络爬虫,就是使用HTTP协议模拟浏览器进行网络请求
* request 就是提交请求信息
* response 获得数据
* 自动化程序或脚本 使用什么语言进行开发
* 语言是没有任何限制(Python、Java、.net、任何一种)
演示一个爬虫程序
要获取的数据是起点中文网的小说数据、自动化。
爬虫究竟有什么用?
- 1)爬虫爬取的数据可以用来做数据分析,扩展:互联网的数据分析,大多数是针对用户的分析
- 内部数据
- 外部数据
- 2)爬虫爬去的数据可以给搜索系统使用
- 内部数据:站内搜索,不用爬虫
- 外部数据:百度搜索
- 3)竞品分析
- 4)基于数据的商业模式
- 5)……
简单分类
- 通用爬虫,爬取的数据量非常大、范围特别广
- 垂直爬虫,只爬取特定领域的数据,小的。
网络爬虫运行原理
网络爬虫的本质,其实就是模拟浏览器发送HTTP请求。
http协议的状态码
- 1xx:信息响应类,表示接收到请求并且继续处理
- 2xx:处理成功响应类,表示动作被成功接收、理解和接受
- 3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
- 4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
- 5xx:服务端错误,服务器不能正确执行一个正确的请求
http协议中常见的状态 - 200 正常访问,并且成功
- 301,302 重定向
- 404 资源不存在
- 500 服务器端错误
网络爬虫究竟是怎么运行的?
单个页面是如何运行的? - 1)指定一个url
- 2)使用技术发送get请求
- 3)获得服务端的响应
- 4)将二进制的数据,转化成HTML文档
jdk原生封装的get方法
public static void main(String[] args) throws IOException {
//1.获取的yrl路径
String url="http://www.itcast.cn";
URL URL = new URL(url);
//2.发请求
URLConnection urlConnection = URL.openConnection();
//3.获取结果
// 4. 得到一个响应的数据,输入流(html文档的二进制文件,字符流)
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, Charset.forName("utf-8"));
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("utf-8")));
String line = null;
while((line = bufferedReader.readLine())!=null){
System.out.println(line);
}
}