什么是爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端(主要指浏览器)发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
网络爬虫就是根据网页的地址来寻找网页的,也就是URL。举一个简单的例子,我们在浏览器的地址栏中输入的字符串就是URL,例如:https://www.baidu.com/
URL就是同意资源定位符(Uniform Resource Locator),它的一般格式如下(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分组成:
(1)protocol:第一部分就是协议,例如百度使用的就是https协议;
(2)hostname[:port]:第二部分就是主机名(还有端口号为可选参数),一般网站默认的端口号为80,例如百度的主机名就是www.baidu.com,这个就是服务器的地址;
(3)path:第三部分就是主机资源的具体地址,如目录和文件名等。
网络爬虫就是根据这个URL来获取网页信息的。
爬虫的分类
1 根据被爬取网站的数量不同,可以分为:
- 通用爬虫,如 搜索引擎
- 聚焦爬虫,如12306抢票,或专门抓取某一个(某一类)网站数据
2 根据是否以获取数据为目的,可以分为:
- 功能性爬虫,给你喜欢的明星投票、点赞
- 数据增量爬虫,比如招聘信息
3 根据url地址和对应的页面内容是否改变,数据增量爬虫可以分为:
- 基于url地址变化、内容也随之变化的数据增量爬虫
- url地址不变、内容变化的数据增量爬虫
3.爬虫的流程
爬虫的基本流程如下:
- 获取一个url
- 向url发送请求,并获取响应(需要http协议)
- 如果从响应中提取url,则继续发送请求获取响应
- 如果从响应中提取数据,则将数据进行保存
robots协议
Robots协议: 网站通过Robots协议告诉搜索引擎哪些页面可以抓取, 那些页面不能抓取,但它仅仅是互联网中的一种约定.
http和https的概念
HTTPS比HTTP更安全,但是性能更低
- HTTP:超文本传输协议,默认端口号是80
超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
- HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
- 可以打开浏览器访问一个url,右键检查,点击net work,点选一个url,查看http协议的形式
http请求的形式如上图所示
HTTP常见请求头
1. Host (主机和端口号)
2. Connection (链接类型)
3. Upgrade-Insecure-Requests (升级为HTTPS请求)
4. User-Agent (浏览器名称)
5. Accept (传输文件类型)
6. Referer (页面跳转处)
7. Accept-Encoding(文件编解码格式)
8. Cookie (Cookie)
9. x-requested-with :XMLHttpRequest (是Ajax 异步请求)
Requests库
Requests库的7个主要方法
requests.requests(): 构造一个请求,支持以下基本方法,以下方法均对应于HTTP的相关方法
requests.get(): 获取HTML网页的主要方法
requests.head(): 获取HTML网页头信息的主要方法
requests.post(): 向HTML提交POST请求的方法
requests.put(): 向HTML网页提交PUT请求的方法
requests.patch(): 向HTML网页提交局部修改请求
requests.delete(): 向HTML页面提交删除请求
Robots协议
Robots Exclusion Standard:网络爬虫排除标准
作用:网站告知爬虫哪些页面可以抓取,哪些页面不行。
形式:在网站根目录下的robots.txt文件。
点击查看京东的robots协议
User-agent: * #对任何的网络爬虫都应该遵守如下协议
Disallow: /?* #任何爬虫都不允许访问以?开头的路径
Disallow: /pop/*.html #任何爬虫都不允许访问pop/*.html
Disallow: /pinpai/*.html?* #任何爬虫都不允许访问/pinpai/*.html?*
User-agent: EtaoSpider # EtaoSpider 、HuihuiSpider 、GwdangSpider 、WochachaSpider 这四个网络爬虫不允许爬取京东的任何网页
Disallow: / # /代表根目录
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
robots协议的基本语法:
User-agent: *
Disallow: /