对于爬虫的基本了解|青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第2天
1.爬虫
基本思路:从一个页面开始,分析其中的URL,提取出来,然后通过这些链接寻求下一个页面,如此往复
2.URL(统一资源定位符)
-URL和URI的区别:具体参考www.zhihu.com/question/21…
- URL的格式:协议(服务方式)://存有该资源的主机IP地址/主机资源的具体地址(如目录和文件名)
- 注意:
第一部分和第二部分用'://'符号隔开
第二部分和第三部分用'/'符号隔开
第一部分和第二部分是不可缺少的,第三部分有时可以省略
3.种子URL
爬虫的一开始就是从互联网上选择一部分网页,以这些网页的链接地址为种子URL
4.URL管理
- URL去重
- URL重定向
(1)URL去重:
目的:网络爬虫爬取重复的URL链接,会下载相同网页的内容,为了解决重复下载的问题,提高爬虫效率,减少不必要的资源消耗
方法:使用Hash对URL进行去重
其中Hash去重是有一些问题以及相应的解决方法,详见bbs.huaweicloud.com/blogs/21809…
(2)URL重定向:
定义:URL重定向(或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术
目的:重定向的目的是当Web应用升级后,如果请求路径发生了变化,可以将原来的路径重定向到新路径,从而避免浏览器请求原路径找不到资源。
关于重定向:hrefgo.com/blog/redire…
url管理:
(1)两个仓库,分别存放没有爬取的和爬取过的链接
(2)有一些函数负责往上述两个仓库里添加链接
(3)有一个函数负责从新url仓库中随机取出一条链接以便下载器爬取
(4)能识别重复的链接,已经爬取过的链接就不需要放进仓库了
具体见:blog.csdn.net/m0_46778548…
爬虫抓取策略:bbs.huaweicloud.com/blogs/21809…
5.流式计算
背景:处理一些对数据的时效性比较高的数据时,若采用传统的数据处理方式则无法满足时效性的需求,因此用流式计算
概念:流式计算即实时计算,数据来了就立即处理,下一秒需要处理的数据大小是不确定,也可能出现非常大的峰值,能够精准一次的处理海量高并发的数据是很重要的
6.流式计算框架
- 目前主流的流式计算框架有Storm、Spark Streaming、Flink三种
(1)处理模式:对于流式处理框架而言,有两种完全不同的处理模式: 原生流(Native)方式:将所有的数据一条一条的处理,例如Storm、Samza、Flink 微批处理(Batch)方式:将输入数据以某个时间间隔T切分成多个微批量数据,之后对每个微批量数据进行处理,如Spark Streaming、Trident等
(2)消息传输保障:
一般有三种消息保障: - At Most Once,表示每条消息传输次数为 0 次或 1 次,消息有可能会丢失,例如,Storm、Samza
- At Least Once,表示每条消息传输次数大于 1 次,消息有可能会重复但不会丢失,例如 Spark Streaming、Trident
- Exactly Once,表示每条消息只会精准地传输一次,消息既不会丢失也不会重复,例如,Flink
(3)流式计算框架对比
(4)使用场景:
小型独立的项目,并且需要低延迟的场景,建议使用Storm,比较简单 要求消息投递语义为 Exactly-once;数据量较大,要求高吞吐低延迟;需要进行状态管理或窗口统计,这时建议使用 Flink。
7.Apache Flink
(1)定义:Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
Flink是一款分布式的计算引擎,它可以用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时地处理一些实时数据流,实时地产生数据的结果;也可以用来做一些基于事件的应用,比如说滴滴通过Flink CEP实现实时监测用户及司机的行为流来判断用户或司机的行为是否正当。
8.HTTP协议
具体参考www.liaoxuefeng.com/wiki/101695…
个人思考:这几天我主要了解了一下URL管理方面的内容,以及相关概念,但实际操作比理论更难一些,有时不知该如何下手