一、为什么学习爬虫?

我们处于大数据时代:

数据从哪来?

  • 企业产生的数据:

大型的公司有大量的用户,每天都会产生大量的数据,
大公司会对数据进行统计和归类,中小型公司也开始收集和整理数据
百度指数、新浪指数、BAT腾讯浏览指数

  • 数据平台:

通过各行各业的数据汇总,会花费大量的人力物力取收集数据
数据堂、贵阳数据平台

  • 政府/机构:

是由地方政府机关单位逐级的上报,最终由国家汇总
中华人民共和国国家统计局数据

  • 数据管理咨询公司:

通过大量的人力整理各行各业的数据,会和其他公司合作和专家合作呈现大量的数据
麦肯锡 埃森哲 艾瑞咨询

1、爬虫:

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

2、什么是爬虫?

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

3、爬虫的作用:

1、搜索引擎
2、商品比价(惠惠购物助手)
3、知乎数据分析平台(知乎专栏、数据冰山)

  • 如何写一个爬虫?

网页的三大特征:
1、每一个网页都有一个唯一的URL(统一资源定位符),来进行定位
2、网页都是通过HTML(超文本)文本展示的
3、所有的网页都是通过HTTP(超文本传输协议)或HTTPS协议来传输的
4、爬虫的流程:
1)分析网站,得到目标URL
2)根据URL,发起请求,获取页面的HTML源码
3)从页面源码中提取数据:
a、提取到目标数据,做数据的筛选和持久化存储 b、从页面中提取到新的URL地址,
继续执行第二步操作
4)爬虫结束:所有的目标URL都提取完毕,并且得到数据了,再也没有其他请求任务了,
这时候就看意味着爬虫结束了

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

      四个阶段(印象笔记)
    
  • 6、并不是只有Python能写爬虫?

    PHP:是用来写后端的,对于异步和多任务处理不是太好,爬虫是一个工具性的程序,对效率要求较高
    JAVA:是Python写爬虫的最大竞争对手,Java语言生态系统比较完善,对各模块的支持也比较友好,
    但Java语言是比较笨重的,重构和迭代的成本比较高
    C/C++:同样可以写爬虫,语言比较晦涩,学习门槛高,是一门偏底层的语言,代码成型比较慢
    Python:语法简单简洁,第三方的模块也比较丰富,关于爬虫的网络请求模块(urllib,requests)
    和网络解析模块(lxml,beautifulsoup,pyquery)也比较多,并有从高效稳定的scarpy网络爬虫框架,
    以及scrapy_redis分布式爬虫框架,Python也是一门胶水语言,对于其他语言的调用也比较方便

  • 7、爬虫的分类:

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

抓取网页流程:
1、选取一部分的url作为种子url,将这些url放入到带爬取的任务队列里面
2、从带爬去的任务队列中取出url,发起请求,将获取到的网页源码存储到本地,
并将已经爬取过得url放入已爬取队列中
3、从已爬取url的响应结果中,分析提取其他的url地址,继续添加到待爬取队列中,
之后就不断循环,直到所有的url都提取完毕
爬虫中种子url如何获取:
1、通过网络提交自己的网络地址(https://ziyuan.baidu.com/linksubmit/url)
2、搜索引擎会和DNS服务商合作,拿到最新的网络地址
3、网络中包含的其他外链

DNS服务:将我们的城转接为对应IP的一种技术

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

1)根据用户的访问量,网站的流量越多,越靠前
2)竞价排名:

缺点:
1)必须遵守robot协议:就是一个规范,哪些目录下的资源允许爬取,哪些目录下的资源不允许爬取
(https://www.taobao.com/robots.txt)
‘User-agent’:该项值用来表示是哪家的搜索引擎
‘allow’:允许被爬取的url
‘disallow’:不允许被爬取的url
2)搜索引擎返回的都是网页,并且返回的90%都是无用的数据
3)不能够根据不同的用户的需求或者检索结果返回不同的结果
4)通过爬虫对于对媒体的文件不能够获取

聚焦爬虫:
是面向主题的爬虫,在爬取数据的过程中会对数据进行筛选

文章来源于互联网:爬虫入门简介

发表评论