爬虫简介
爬虫:
网络爬虫机器人,以互联网自由抓取数据的程序
爬虫的作用:
- 搜索引擎
- 商品比价
- 知乎的数据分析平台
如何写一个爬虫?
网页的三大特征:
- 每一个网页都有一个唯一的url(统一资源定位符)来进行定位
- 网页都是通过HTML<超文本>文本展示的
- 所有的网页都是通过HTTP<超文本传输协议>(HTTPS)协议来传输的
爬虫的流程:
- 1.分析网站,得到新的url
+2. 根据url,发起请求,获取页面的HTML源码 - 3.从页面中提取数据
a.提取到目标数据,做数据的筛选和持久化储存
b.从页面中提取到新的url地址,继续执行第二操作 - 4.爬虫结束:所有的目标url都提取完毕,并且得到了数据,再也没有其他请求任务,意味着爬虫结束
可以写爬虫的语言:
PHP
是用来写后端的,对于异步和多任务处理不太好,爬虫是一个工具性的程序,对效率要求比较高
JAVA
是Python写爬虫的最大竞争对手,Java语言生态系统比较完善,对各模块的支持也比较友好。但是Java这门语言比较笨重,重构和迭代成本比价高
C/C++
语言较难,代码成型比较慢
Python
语法简单简洁,第三方模块比较丰富,关于爬虫的网络请求模块和网络解析模块(Lxml,BeautifulSoup,pyQuery)也比较多,并且有高效稳定的scrapy网络爬虫框架,以及爬scrapy,redis分布式爬虫框架,Python也是一门胶水语言,对于其他语言的调用比较方便
爬虫分类:
通用爬虫 聚焦爬虫
通用爬虫
是搜索引擎的重要组成部分
目的
尽可能的将所有互联网上的网页下载到本地,经过预处理(去噪,分词,去广告),最终将数据储存到本地,做一个镜像备份形成一个检索系统
通用爬虫抓取网络流程:
1.选取一部分的url作为种子url,将这些url放入到带爬取的任务队列里面
2.从待爬取的任务列队中取出url,发起请求,将获取的网页源码存储到本地
并将已经爬取过的url ,放到已爬取的队列中
3.从已爬取的URL的响应结果中分析提取其他的url的地址,继续添加到待爬取的队列中,
之后就是不断的循环,直到所有的url都获取完毕。
通用爬虫中的种子url如何获取:
1.通过网站提交自己的网站地址(http://www.baidu.com/)
2.搜索引擎会和DNS服务商合作,拿到最新的网站地址
3.网站中包含其他外链
DNS服务:将我们的域名转换为对应的ip的一种技术
通用爬虫的整体流程:
数据获取------>预处理(去噪,分词,去广告.....)------>存储------>提供检索接口|排名(网络排名)
网站排名:
1.根据用户的访问量(越多越靠前)
2.竞价排名
通用爬虫的缺点:
1.必须遵守robot协议:就是一个规范,告诉搜索引擎,哪些目录下的资源允许爬虫,哪些目录下的资源不允许爬虫
"user-agent":这项值用来表示是哪家的搜索引擎
"allow":允许被爬取的url
"disallow":不允许被爬取的url
2.搜索引擎返回的都是网页,并且返回的90%都是无用的信息
3.不能够根据不同用户的需求返回不同的结果
4.通用爬虫对于多媒体的文件不能够获取
聚焦爬虫
聚焦爬虫是面向主题的爬虫,在爬虫数据的过程中会对数据进行筛选,往往只会爬虫与需求相关的数据