1.娱乐头条结构
2.爬虫的基本概念
3.爬虫的三大模块
4.案例
一、娱乐头条结构
二、爬虫的基本概念
1.什么是爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
网络爬虫本质上就是一个程序 或者 脚本, 网络爬虫按照一定规则获取互联网中信息(数据), 一般来说爬虫被分为三大模块: 获取数据 解析数据 保存数据
2.爬虫价值
爬虫的价值本质就是获取数据的价值. 数据的价值越高, 爬虫的价值越高
数据的价值: 一切皆为数据
例如: 获取到了大量的用户信息(基本信息, 购物信息, 浏览信息): 广告推荐 用户行为分析(用户画像)
例如: 获取到了大量的商品的信息(基本信息, 价格): 比价网
3.爬虫的分类
通用爬虫: 指的获取互联网中所有的数据, 不局限于网站, 行业, 分类 百度 谷歌
垂直爬虫(数据分析处理): 指的获取互联网中某一个网站, 某一个行业, 某一个分类下的数据 慢慢买 笔趣阁
4.爬虫的开发流程
三、爬虫的三大模块
1.发送请求,获取数据
- 回顾http请求:
- 请求相关内容:
- 请求行 : 请求方式 请求的URL 协议版本
- get 和 post 区别:
- get将请求参数放置在url的后面, 而 post将请求参数放置请求体中
- get请求不能无限制的拼接参数, post是没有限制的
- post相对而言要比get安全
- 请求头:
- user-agent : 指定浏览器的内核版本
- cookie : 携带当前网站在浏览器中保存的cookie信息
- referer : 防盗链
- 请求体
- 只有post才有请求体, 请求参数
- 响应相关内容:
- 响应行: 状态码
- 200
- 302
- 304
- 404
- 500
- 响应头 :
- set-cookie : 服务器向浏览器写入cookie信息
- location : 指定重定向的URL路径
- 响应体
- 爬虫获取数据就是获取的响应体的内容
(1)原生jdk发送get请求
public class JdkGet {
public static void main(String[] args) throws Exception{
//1.确定url
String indexUrl = "https://www.douban.com";
//String indexUrl = "https://www.douban.com?username=123";设置请求参数
//2.发送请求,获取数据
URL url = new URL(indexUrl);
//获取连接对象
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置请求的方式
conn.setRequestMethod("GET");
//获取响应的输入流
InputStream in = conn.getInputStream();
//封装字符流
InputStreamReader reader = new InputStreamReader(in,"UTF-8");
//字符缓冲流
BufferedReader br = new BufferedReader(reader);
//字符缓冲区
StringBuilder builder = new StringBuilder();
String line;
//按行读
while((line = br.readLine())!=null){
builder.append(line);
builder.append("\n");
}
System.out.println(builder.toString());
}
}
(2)原生jd