第1章-爬虫简介(http请求)
第1章-爬虫简介
一、通讯协议
每一个应用程序都有一个独立的标识–端口(逻辑端口号)
HTTP:超文本传输协议,默认端口80
二、网络模型
https=http+ssl,默认端口443
SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
三、Http请求与响应
3.1 Http通信
- 当⽤户在浏览器的地址栏中输⼊⼀个URL并按回⻋键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“Get”和“Post”两种⽅法。
- 当我们在浏览器输⼊URL http://www.baidu.com 的时候,浏览器发送⼀个Request请求去获取 http://www.baidu.com 的html⽂件(即网页源码),服务器把Response⽂件对象发送回给浏览器。
- 浏览器分析Response中的 HTML,发现其中引⽤了很多其他⽂件,⽐如Images⽂件,CSS⽂件,JS⽂件。 浏览器会⾃动再次发送Request去获取图⽚,CSS⽂件,或者JS⽂件。
- 当所有的⽂件都下载成功后,⽹⻚会根据HTML语法结构,完整的显示出来了。
3.2 Http请求
HTTP请求到服务器的请求消息,包括以下格式:
请求⾏、请求头部、空⾏、请求数据
3.3 Http请求方法
根据HTTP标准,HTTP请求可以使⽤多种请求⽅法:
(1)HTTP 0.9:只有基本的⽂本 GET 功能。
(2)HTTP 1.0:完善的请求/响应模型,并将协议补充完整,定义了三种请求⽅法:GET, POST 和 HEAD⽅法。
(3)HTTP 1.1:在 1.0 基础上进⾏更新,新增了五种请求⽅法:OPTIONS, PUT,DELETE, TRACE 和 CONNECT ⽅法。
(4)HTTP 2.0(未普及):请求/响应⾸部的定义基本没有改变,只是所有⾸部键必须全部⼩写,⽽且请求⾏要独⽴为 :method、:scheme、:host、:path这些键值对。
四、几个概念
4.1 GET和POST
GET : 查询参数都会在URL上显示出来
POST : 查询参数和需要提交数据是隐藏在Form表单⾥的,不会在URL地址上显示出来
4.2 URL组成部分
URL: 统⼀资源定位符
https://news.qq.com/omn/TWF20200/TWF2020032502924000.html
https: 协议
news.qq.com: 主机名,可以将主机理解为⼀台名叫 news.qq.com 的机器。这台主机在 qq.com 域名下
port 端⼝号: 80 , /new.qq.com 在他的后⾯有个 :80 可以省略
TWF20200/TWF2020032502924000.html 访问资源的路径
#anchor: 锚点⽤前端在做⻚⾯定位的
注意 : 在浏览器请求⼀个url,浏览器会对这个url进⾏⼀个编码。(除英⽂字⺟、数字和部分标识,其他的全部使⽤% 加 ⼗六进制码进⾏编码)
例如 : https://tieba.baidu.com/f?ie=utf-8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search%E6%B5%B7%E8%B4%BC%E7%8E%8B = 海贼王
4.3 User-Agent ⽤户代理
作⽤:记录⽤户的浏览器、操作系统等,为了让⽤户更好的获取HTML⻚⾯效果
User-Agent:
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Mozilla Firefox:(Gecko内核)
4.4 Refer
表明当前这个请求是从哪个url过来的,⼀般情况下可以⽤来做反爬的技术
4.5 状态码
200 : 请求成功
301 : 永久重定向
302 : 临时重定向
403 : 服务器拒绝请求
404 : 请求失败(服务器⽆法根据客户端的请求找到资源(⽹⻚))
500 : 服务器内部请求
4.6 抓包工具
- Elements : 元素(⽹⻚源代码),提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
- Console : 控制台 (打印信息)
- Sources : 信息来源 (整个⽹站加载的⽂件)
- NetWork : ⽹络⼯作(信息抓包) 能够看到很多的⽹⻚请求
4.6 robots协议
robots协议也叫robots.txt(统一小写):是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络爬虫,此网站中的哪些内容是不应被爬取的,哪些是可以被爬取的。
因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。
五、爬虫介绍
1、爬虫存在的意义:
为其他程序提供数据源 如搜索引擎(百度、Google等)、数据分析、⼤数据等等
2、企业获取数据的方式:
- 公司⾃有的数据
- 第三⽅平台购买的数据 (百度指数、数据堂)
- 爬⾍爬取的数据
3、Python 做爬⾍的优势:
- PHP : 对多线程、异步⽀持不太好
- Java : 代码量⼤,代码笨重
- C/C++ : 代码量⼤,难以编写
- Python : ⽀持模块多、代码简介、开发效率⾼ (scrapy框架)
4、爬⾍的分类:
- 通⽤⽹络爬⾍— 例如 baidu google yahu
- 聚焦⽹络爬⾍—根据既定的⽬标有选择的抓取某⼀特定主题内容
- 增量式⽹络爬⾍—指对下载⽹⻚采取增量式的更新和只爬新产⽣的或者已经发⽣变化的数据
- 深层⽹络爬⾍— 指那些⼤部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有⽤户提交⼀些关键词才能获得的web⻚⾯, 例如 ⽤户登录注册才能访问的⻚⾯