爬虫概述
爬虫,又称网页蜘蛛或网络机器人
爬虫是模拟人操作客户端(浏览器,APP) 想服务器发起网络请求 抓取数据的自动化程序或脚本
Pyinstaller
# 说明:
1.模拟:用爬虫程序伪装出人的行为,避免被服务器识别为爬虫程序
2.客户端:浏览器,APP都可以实现人与服务器之间的交互行为,应用客户端从服务器获取数据
3.自动化:数据量较小是可以人工获取数据,但往往在公司中爬取的数据量在百万条,千万条级别的,所以要程序自动化获取数据
1.2 爬虫语言
# 爬虫语言:PHP,C/C++,java,Python,Golang,nodejs
# 对比:
PHP:并发能力差,对多进程和多线程支持不好,数据量较大时爬虫效率较低
C/C++:语言效率高,但学习成本高,对程序员的技术能力要求较高,所以目前还停留在研究层面,市场需求量很小
Java:Python爬虫的主要竞争对手,由于Java语言的特点,代码臃肿,代码量大,维护成本重构成本高,开发效率低,但目前市场上岗需求比较旺盛
Python:语法简单,学习成本低,对新手比较友好,Python语言良好的生态,大量库和框架的支持是Python爬虫目前处于爬虫圈的主地位。
1.2 能爬取那些数据
(1)网页文本:HTML、JSON格式文本等
(2)图片、视频:都是二进制数据
1.3 爬虫分类
- 通用爬虫
- 聚焦爬虫
1.通用爬虫: 搜索引擎
# 实例:百度,搜狗,Goole的搜索引擎
# 功能:访问网页 -> 抓取数据 -> 数据处理 -> 提供检索服务
# 工作流程:
1. 给定一个起始的URL,存于爬取队列中
2. 爬虫程序冲队列中取出url,爬取数据
3. 解析爬取数据,获取网页内的所有url,需要的数据,存入爬取队列
4. 重复第二个步骤
# 搜索引擎获取网站链接:
1. 主动将url提交给搜索引擎(https://ziyuan.baidu.com/linksubmit/url)
2. 在其他热门网站设置友情链接
3. 百度和DNS服务商合作,收录新网站
# 网站排名(SEO):
1. 根据PageRank值进行排名(流量,点击率)
2. 百度竞价排名,钱多就靠前排
# 缺点:
1. 抓取内容多数无用
2. 无法精确获取数据
# 协议: robots协议 --> 约定哪些内容允许那些爬虫抓取
1. 无需遵守,该协议适用于通用爬虫同样也适用于聚焦爬虫,而我们写的是聚焦爬虫
2. 查看方法: 网站 url/robots.txt,如: https://www.baidu.com/robots.txt
User-Agent:xxx //可以被允许的浏览器
Allow:xxx //允许你做的事情
Disallow:xxx //不允许你做的事情
Sitemap:xxx //如果你非要爬的话,别瞎搞,我给你一个站点地图,你去那里面随便爬好吧
2. 聚焦爬虫
# 概念:
聚焦爬虫只针对某一领域根据特定要求实现的爬虫程序,抓取需要的数据(垂直领域爬取)
# 设计思路:
1. 确定爬取的url,模拟浏览器向服务器发送请求获取响应数据
2. 进行数据解析 --> 目标数据
3. 将目标数据持久化到本地 --> 存起来