爬虫介绍

一、为什么学习爬虫?

处于大数据时代:

企业产生的数据:

大型的公司有大量的用户,每天都会产生大量的数据,

大公司会对数据进行统计和归类,中小型公司也开始收集和整理数据

百度指数、新浪指数、BAT腾讯浏览指数

数据平台:

通过各行各业的数据汇总,会花费大量的人力物力取收集数据

数据堂、贵阳数据平台

政府/机构:

是由地方政府机关单位逐级的上报,最终由国家汇总

中华人民共和国国家统计局数据

数据管理咨询公司:

通过大量的人力整理各行各业的数据,会和其他公司合作和专家合作呈现大量的数据

麦肯锡 埃森哲 艾瑞咨询

爬虫:

如果以上的数据平台不能够满足我们的数据需求的时候,或者说数据的价格非常昂贵,这时我们就可以通过爬虫去获取数据

什么是爬虫?

爬虫:网络爬虫机器人,从互联网自动抓取数据的程序
理论上:通过浏览器看到的数据,我们都能爬到

爬虫的作用:

  • 搜索引擎
  • 商品比价(惠惠购物助手)
  • 知乎数据分析平台(知乎专栏、数据冰山)
  • 如何写一个爬虫?

网页的三大特征:

  • 每一个网页都有一个唯一的URL(统一资源定位符),来进行定位
  • 网页都是通过HTML(超文本)文本展示的
  • 所有的网页都是通过HTTP(超文本传输协议)或HTTPS协议来传输的

爬虫的流程:

  • 分析网站,得到目标URL
  • 根据URL,发起请求,获取页面的HTML源码
  • 从页面源码中提取数据:

a、提取到目标数据,做数据的筛选和持久化存储
b、从页面中提取到新的URL地址,继续执行第二步操作

  • 爬虫结束:所有的目标URL都提取完毕,并且得到数据了,再也没有其他请求任务了,这时候就看意味着爬虫结束了

爬虫需要掌握的基本知识:

四个阶段(印象笔记)

并不是只有Python写爬虫:

  • PHP

用来写后端,对异步和多任务处理不是太好,爬虫是一个工具性的程序,对效率要求比较高

  • Java

是Python的竞争对手,Java语言生态系统比较完善,对各模块的支持也比较好,但是Java这门语言是比较笨重的,重构和迭代的成本比较高

  • C/C++

同样可以写爬虫,语言比较晦涩,学习的门槛比较高,是一门偏底层的语言,代码成型比较慢

  • python

语法简单简洁,第三方的模块比较丰富,关于爬虫的网络请求模块(URL、requests)和网络解析模块(lxml、BeautifulSoup、pyQuery)也比较多,并且有从高效稳定的scrapy网络爬虫框架,以及scrapy_redis分布式爬虫框架,python也是一门胶水语言,对于其他语言的调用也比较方便

爬虫的分类:

  • 通用爬虫:
  • 是搜索引擎的重要组成部分
  • 目的:
    尽可能的将所有的互联网上的网页下载到本地,经过预处理(去噪、分词、去广告等等),最终将数据存储到本地,做一个镜像备份,形成一个检索系统
  • 通用爬虫抓取网页的流程:

1、选取一部分的URL作为种子URL,将这些URL放入到带爬去的任务队列里面
2、从带爬取的任务队列中取出URL,发起请求,将获取到的网页源码存储到本地,并将已经爬取过的URL放入已爬取的队列中
3、从已爬取URL的响应结果中,分析提取其他的URL地址,继续添加到待爬取队列中,之后就是不断的循环,知道所有的URL都提取完毕

通用爬虫中的种子URL如何获取

1、通过网站提交自己的网站地址(https://ziyuan.baidu.com/linksubmit/url)

2、搜索引擎会和DNS服务商(DNS服务:将我们的域转换为对应IP的一种技术)合作,拿到最新的网站地址

3、 网站中包含的其他外链

通用爬虫的整体流程:

数据的获取 -> 预处理(分词,去噪,去广告……)-> 存储 -> 提供检索接口|排名(网站排名)

网站排名:

1、根据用户的访问量,网站的流量越多,越靠前

2、竞价排名:谁出价高,谁就排在前面

通用爬虫的缺点:

1、必须遵守robot协议

就是一个规范,告诉搜索引擎,哪些目录下的资源允许爬取,哪些目录下的资源不允许爬取(https://www.taobao.com/robots.txt)

"User-agent":该项值用来表示是哪家的搜索引擎
"allow":允许被爬取的URL
"disllow":不允许被爬取的URL

2、搜索引擎返回的都是网页,并且返回的90%的都是无用的数据
3、不能够根据不同的用户的需求或者检索结果返回不同的结果
4、通用爬虫对于媒体的文件不能够获取

  • 聚焦爬虫

聚焦补充是面向主题的爬虫,再爬取数据的过程中会对数据进行筛选,往往只会爬虫与需求相关的数据

你可能感兴趣的:(爬虫介绍)