1.爬虫概述
1.1爬虫的概念
爬虫,又称网页蜘蛛或网络机器人
爬虫是模拟人操作客户端(浏览器,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.3爬虫分类
(1)通用爬虫
(2)聚焦爬虫
1.通用爬虫:搜索引擎
# 实例:百度, 搜狗, Google的搜索引擎
# 功能:访问网页 -> 爬取数据 -> 数据处理 -> 提供检索服务
# 工作流
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
2.聚焦爬虫
# 概念
聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序,抓取需要的数据(垂直领域爬取)
# 设计思路
1.确定爬取的url,模拟浏览器向服务器发送请求获取相应数据
2.进行数据解析
3.将目标数据持久化到本地