爬虫概述&协议,环境搭建
1. 爬虫概述
1.1 爬虫概念
爬虫, 又称网页蜘蛛或网络机器人.
爬虫是 模拟人操作客户端(浏览器, APP) 向服务器发起网络请求 抓取数据的自动化程序或脚本.
# 说明:
1.模拟: 用爬虫程序伪装出人的行为, 避免被服务识别为爬虫程序
2.客户端: 浏览器, APP都可以实现人与服务器之间的交互行为, 应用客户端从服务器获取数据
3.自动化: 数据量较小时可以人工获取数据, 但往往在公司中爬取的数据量在百万条, 千万条级别的, 所以要程序自动化获取数据.
1.2 爬虫语言
# 爬虫语言:PHP, C/C++, Java, Python
# 对比:
PHP: 并发能力差, 对多进程和多线程支持不好, 数据量较大时爬虫效率较低
C/C++: 语言效率高, 但学习成本高, 对程序员的技术能力要求较高, 所以目前还停留在研究层面, 市场需求量很小
Java: Python爬虫的主要竞争对手, 由于Java语言的特点, 代码臃肿, 代码量大, 维护成本重构成本高, 开发效率低. 但目前市场上岗位需求比较旺盛.
Python:语法简单, 学习成本较低, 对新手比较友好. Python语言良好的生态, 大量库和框架的支持是的Python爬虫目前处于爬虫圈的主导地位.
1.3 爬虫分类
(1). 通用爬虫
(2). 聚焦爬虫
1.通用爬虫:搜索引擎
# 实例: 百度, 搜狗, Google的搜索引擎
# 功能: 访问网页 -> 抓取数据 -> 数据处理 -> 提供检索服务
# 工作流:
1.给定一个起始URL, 存于爬取队列中
2.爬虫程序从队列中取出url, 爬取数据
3.解析爬取数据, 获取网页内的所有url, 放入爬取队列
4.重复第二个步骤
# 使搜索引擎获取网站链接:
1.主动将url提交各搜索引擎
2.在其他热门网站设置友情了解
3.百度和DNS服务商合作, 收录新网站
# 网站排名(SEO):
1.根据PageRank值进行排名(流量, 点击率)
2.百度竞价排名, 钱多就靠前排
# 缺点:
1.抓取的内容多数无用
2.无法精确获取数据
# 协议: robots协议 --> 约定哪些内容允许哪些爬虫抓取
1.无需遵守, 该协议适用于通用爬虫, 而我们写的是聚焦爬虫
2.查看方法: 网站url/robots.txt, 如https://www.baidu.com/robots.txt
2.聚焦爬虫
# 概念:
聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序, 抓取需要的数据(垂直领域爬取)
# 设计思路:
(1).确定爬取的url, 模拟浏览器请服务器发送请求
(2).获取响应数据并进行数据解析
(3).将目标数据持久化到本地
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivY1GnnV-1574649618141)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1563956507570.png)]
1.4 爬虫课程概览:
1.请求库的学习
2.解析库的学习
3.反爬机制与反反爬策略
UA检测
动态数据加载: JS动态数据加载, Ajax数据加载
IP封禁
账号封禁
验证码
数据加密
图片懒加载
4.scrapy爬虫框架
5.增量式爬虫与分布式爬虫
6.总结与串讲
2. 协议
2.1 HTTP协议与HTTPS协议
# HTTP协议: 明文传输, 端口80
- Http协议, 全称为Hyper Text Transfer Protocol, 即超文本传输协议.
- HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议, 它能保证高效而准确地传送超文本文档.
- 目前广泛使用的是HTTP 1.1版本
# HTTPS协议: 加密传输, 端口443
- HTTPS全称是Hyper Text Transfer Protocol over Secure Socket Layer, 是以安全为目标的HTTP通道. HTTPS协议实质是HTTP的安全版, 即HTTP下加入SSL层, 简称HTTPS.
- HTTPS的安全体现在SSL的加密行为, 即通过HTTPS协议传输的数据都是经过SSL加密的
- HTTPS的作用:
1.建立一个信息安全的通道来保证数据传输的安全
2.确认网站的真实性, 凡是使用了HTTPS的网站, 都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息, 也可以通过CA机构颁发的安全签章来查询
2.2 服务器常见端口
1.ftp: File Transfer Protocol的缩写, 即文件传输协议. 端口:21
2.ssh: Secure Shell的缩写, 用于远程登录会话. 端口:22
3.MySQL: 关系型数据库, 端口:3306
4.MongoDB: 非关系型数据库, 端口:27017
5.Redis: 非关系型数据库, 端口:6379
3. 开发准备
3.1 web端
Python3.6
Pycharm
Google Chrome
3.2 APP
fiddler抓包工具
Charles抓包工具
Appium自动化测试工具
#### 3.1 web端
```Python
Python3.6
Pycharm
Google Chrome
3.2 APP
fiddler抓包工具
Charles抓包工具
Appium自动化测试工具