《自己动手写爬虫》笔记

版权声明:本文为博主原创文章,转载请标明出处http://blog.csdn.net/leoe_ https://blog.csdn.net/LEoe_/article/details/79703745

《自己动手写爬虫》这本书总体介绍了整个网络爬虫由浅入深的知识体系,将爬虫中每个部分分割开来具体的细讲,非常适合新手来入门,由于之前只知道使用爬虫框架,所以一遇到一些错误或者想调整一些爬架内容就无从下手,所以还是将一些基础知识弄明白之后再去使用框架就会得心应手了。书中关于当前的分布式爬虫的内容感觉有点少,感觉随着数据爬取的增大,这部分的使用频率应该会越来越多,还需要多向这个方面了解下。代码的部分占据了很多的内容,完全可以把代码放到GitHub上,估计是撑页数吧。总体来说还是非常值得学习的一本书。

下面记录一下其中的知识点,以后再深入学习的时候再逐一完善其中的细节。


一:爬虫全面剖析

1、get、post请求中URL长度参数的相关知识
2、在万维网中,一个网页的实际深度最多能达到17层
3、了解宽度优先爬虫和带偏好爬虫
4、内存数据库 – Berkeley DB | 开源软件 – Heritrix
5、在对网址进行内存存储的时候一般使用MD5进行压缩
6、对已爬取过的URL使用布隆过滤算法,建立Visited表

一个简单的爬虫架构:
这里写图片描述


二:分布式爬虫

1、Consistent Hash 负载平衡算法
2、MapReduce 处理数据过程如下:

   map    (分解并行的任务)
    |
    √
 combine  (合成器,处理合成的list,提高reduce效率)
    |
    √
  reduce  (把处理后的结果汇总起来)

3、分布式爬虫框架:Nutch(底层实现使用hadoop)


三:爬虫中的细节问题

1、动态页面 = 爬虫黑洞 (使用Visited解决)
2、导向词权重计算:

  • URL权重 = domain*a1 + link*a2 + parent.URL*a3 + depath*a4 + a5* a i

3、网页评分:PageRank
4、主题爬虫 / 理解限定爬虫(采用URL建模)


四:处理HTML页面

1、熟练掌握正则表达式的使用
2、使用Jsoup解析HTML文件
3、通过找到最长文本来寻找网页正文(网页去噪)
4、使用Rhino来从JS中抽取信息


五:非HTML正文抽取

1、使用PDFBox 来解析PDF文件
2、使用POI处理office系列文档
3、使用PtfParser处理RTF文件


六:多媒体信息抽取

1、抽取视频关键帧:一种方法为基于镜头边界系数的关键帧提取策略,采用非极大值抑制法确定边界系数极大值并排序。
2、使用JMF框架处理多媒体数据,框架特点:

  • 播放各种媒体文件
  • 播放从互联网下载的媒体流
  • 利用硬件截取音频、视频并保存
  • 处理媒体文件,并转换文件格式
  • 在互联网上上传/播放数据或数据流

3、通过使用SourceForge中的org.farng.mp3解析MP3中的数据


七:网页去噪

1、统计学降噪:网页分类(网页相似度计算)

抽象 — 串行的节点/DOM树

2、HtmlParser对Html文件解析为串行的节点
3、NekoHTML将Html解析为标准的DOM树
4、比较网页相似度的基本流程如下:

  • 将网页抽象成一个节点数据
  • 计算两个网页对应的节点数据的最长公共子序列长度LCS-Length
  • 计算两个网页的相似度 :
Sim = (2*LCS-Length)/(Length1+Length2)

5、风格树内确定噪声元素
6、元素节点E的重要性
7、java使用统计去噪

  • 删除噪音块
  • 划分段落
  • 评估段落

8、利用视觉降噪:网页分块算法(VIPS)
9、java中的Cobra网页渲染引擎


八:分析Web图

1、连接关系网存储:
小型爬虫:存储连接之间的关系放到内存中
大型爬虫:在内存数据中建立连接关系
2、连接出度和入度进行排序

分析算法基础:
        PageRank:重要程度依赖网页的入链,高等级文件连接到网页,等级也越高
        HITS算法:通过迭代计算得到某个检索提问的最有价值的网页

九:去除重复文档

1、利用checksum算法去重(MD5算法)
2、利用“语义指纹”去重
3、利用SimHash排重


十:网页分类

分类和聚类

  • 分类:支持向量机、线性判别函数、Boosting、AdaBoost分类、SVM、朴素贝叶斯、K近邻、EM最大熵
  • 聚类:DBScan算法(基于密度)、层次聚类、KMeans、数据流聚类

猜你喜欢

转载自blog.csdn.net/LEoe_/article/details/79703745