1. 爬虫介绍
1-1. 爬虫定义
⽹络爬⾍(⼜被称为⽹⻚蜘蛛,⽹络机器⼈)就是模拟客户端发送⽹络请求,
接收请求响应,⼀种按照⼀定的规则,⾃动地抓取互联⽹信息的程序。
只要是浏览器能做的事情,原则上,爬⾍都能够做
1-2. 爬虫的用途
- 12306抢票
- 网站上的投票
- 短信轰炸
- 大数据获取
1-3. 爬虫的设计思路
- 确定需要爬取的url地址
- 通过HTTP/HTTPS协议获取对应的HTML页面
- 提取HTML页面有用的数据
2. 爬虫的种类
2-1. 通用爬虫(搜索引擎)
流程:
2-2. 聚焦爬虫
流程:
**定义:**是"⾯向特定主题需求"的⼀种⽹络爬⾍程序,它与通⽤搜索引擎爬⾍
的区别在于: 聚焦爬⾍在实施⽹⻚抓取时会对内容进⾏处理筛选,尽量保证只
抓取与需求相关的⽹⻚信息
3. robots协议
定义:
Robots协议(也叫爬⾍协议、机器⼈协议等),全称是“⽹络爬⾍排除标
准”(Robots Exclusion Protocol),⽹站通过Robots协议告诉搜索引擎哪些
⻚⾯可以抓取,哪些⻚⾯不能抓取
使用方法:
网址后面加 /robots.txt
如:
淘宝⽹:https://www.taobao.com/robots.txt
腾讯⽹: http://www.qq.com/robots.txt
4. HTTP和HTTPS协议
4-1. HTTP协议简介
概念: 通信计算机双⽅必须共同遵从的⼀组约定,只有遵守这个约定,计算机
之间才能相互通信
HTTP协议(HyperText Transfer Protocol,超⽂本传输协议):是⼀种发布
和接收 HTML⻚⾯的⽅法。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲
是HTTP的安全版,在HTTP下加⼊SSL层
SSL(Secure Sockets Layer 安全套接层)主要⽤于Web的安全传输协议,在
传输层对⽹络连接进⾏加密,保障在Internet上数据传输的安全
HTTP的端⼝号为80
HTTPS的端⼝号为443
4-2. HTTP的请求和响应
组成: 客户端请求消息 与 服务器响应消息
主要两种请求方式:
“GET” 请求:从服务器上获取数据
“POST” 请求: 常用于携带不公开的数据进行请求,如:网页登录
URL: 统⼀资源定位符,是⽤于完整地描述Internet上⽹⻚和其他资源的地址的
⼀种标识⽅法.
基本格式:
scheme://host[:port#]/path/…/[?query-string][#anchor]
scheme | 协议(例如:http, https, ftp) |
---|---|
host | 服务器的IP地址或者域名 |
port# | 服务器的端⼝(如果是⾛协议默认端⼝,缺省端⼝80) |
path | 访问资源的路径 |
query-string | 参数,发送给http服务器的数据 |
anchor | 锚(跳转到⽹⻚的指定锚点位置) |
4-3. 客户端HTTP请求
URL只是标识资源的位置,⽽HTTP是⽤来提交和获取资源。客户端发送⼀个
HTTP请求到服务器的请求消息,包括以下格式:
请求⾏、请求头部、空⾏、请求数据
一个典型的HTTP请求示例
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html, applicat ion/ xhtml+xml, application/xml;q=0.9, image/wet
Sec-Fetch-Site: same-origin
Referer:https:/ /www. baidu. com/s?ie=utf-8&f=8&rsv_ bp=1&rsv_ idx=1&tn=baj
Accept -Encoding: gzip, deflate, br
Accept-Language: zh-CN, zh;q=0.9
Cookie: BIDUPSID=4049831 E3DB8DE890DFFCA6103FF02C1;
请求方法
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
HEAD | 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
常用的请求报头
- HOST (主机和端口号)
Host:对应⽹址URL中的Web名称和端⼝号,⽤于指定被请求资源的Internet
主机和端⼝号,通常属于URL的⼀部分。 - Connection(链接类型)
Connection:表示客户端与服务连接类型
(1) Client 发起⼀个包含 Connection:keep-alive 的请求,HTTP/1.1
使⽤ keep-alive 为默认值。
(2) Server收到请求后:
如果 Server ⽀持 keep-alive,回复⼀个包含 Connection:keep-
alive 的响应,不关闭连接;
如果 Server 不⽀持 keep-alive,回复⼀个包含 Connection:close
的响应,关闭连接。
(3) 如果client收到包含 Connection:keep-alive 的响应,向同⼀个连接
发送下⼀个请求,直到⼀⽅主动关闭连接。 - Upgrade-Insecure-Requests(升级为HTTPS请求)
Upgrade-Insecure-Requests:升级不安全的请求,意思是会在加载 http 资
源时⾃动替换成 https 请求,让浏览器不再显示https⻚⾯中的http请求警报。 - User-Agent(浏览器名称)
User-Agent:是客户浏览器的名称 - Accept(传输文件类型)
Accept:指浏览器或其他客户端可以接受的MIME(Multipurpose Internet
Mail Extensions(多⽤途互联⽹邮件扩展))⽂件类型,服务器可以根据它判
断并返回适当的⽂件格式。
Accept: /:表示什么都可以接收。
Accept:image/gif:表明客户端希望接受GIF图像格式的资源;
Accept:text/html:表明客户端希望接受html⽂本。
Accept: text/html, application/xhtml+xml;q=0.9,
image/*;q=0.8:表示浏览器⽀持的 MIME 类型分别是 html⽂本、xhtml和
xml⽂档、所有的图像格式资源。 - Referer (页面跳转处)
Referer:表明产⽣请求的⽹⻚来⾃于哪个URL,⽤户是从该 Referer⻚⾯访问
到当前请求的⻚⾯。这个属性可以⽤来跟踪Web请求来⾃哪个⻚⾯,是从什么
⽹站来的等。 - Accept-Encoding(文件编解码格式)
Accept-Encoding:指出浏览器可以接受的编码⽅式。编码⽅式不同于⽂件格
式,它是为了压缩⽂件并加速⽂件传递速度。浏览器在接收到Web响应之后先
解码,然后再检查⽂件格式,许多情形下这可以减少⼤量的下载时间。 - Accept-Language(语言种类)
Accept-Langeuage:指出浏览器可以接受的语⾔种类,如en或en-us指英
语,zh或者zh-cn指中⽂,当服务器能够提供⼀种以上的语⾔版本时要⽤到。 - Accept-Chaset(字符编码)
Accept-Charset:指出浏览器可以接受的字符编码。 - Cookie(Cookie)
Cookie:浏览器⽤这个属性向服务器发送Cookie。Cookie是在浏览器中寄存
的⼩型数据体,它可以记载和服务器相关的⽤户信息 - Content-Type(POST数据类型)
Content-Type:POST请求⾥⽤来表示的内容类型。
4-4. 服务端HTTP响应
四个组成部分: 状态行、消息报头、空行、响应正文
常见响应状态码:
代号 | 描述 |
---|---|
100~199 | 表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。 |
200~299 | 表示服务器成功接收请求并已完成整个处理过程。常⽤200(OK 请求成功)。 |
300~399 | 为完成请求,客户需进⼀步细化请求。例如:请求的资源已经移动⼀个新地址、常⽤302(所请求的⻚⾯已经临时转移⾄新的url)、307和304(使⽤缓存资源)。 |
400~499 | 客户端的请求有错误,常⽤404(服务器⽆法找到被请求的⻚⾯)、403(服务器拒绝访问,权限不够)。 |
500~599 | 服务器端出现错误,常⽤500(请求未完成。服务器遇到不可预知的情况)。 |