zoukankan      html  css  js  c++  java
  • 爬虫的学习分析

    前言

    爬虫又可以称之为蜘蛛或者说是机器人,很多人肯定都听说过网络爬虫的概念,大意就是他的目标就是不断的发送http请求去爬去网页上的数据,爬虫在搜索引擎中运用的非常的广泛,但是爬虫其实并不简单,下面我给大家详细的讲述关于爬虫的一些细节,或许就有你不知道的细节哦。

    爬虫算法

    先来说说一个简单的爬虫算法,爬虫算法的核心就是获取网页内如,解析出其中的网页链接,再次发送请求取得里面的内容,然后循环。因此这里会需要一个种子链接地址,我们称之为种子网页。你可以把爬虫算法看成一个图算法,各个网页通过入链和出链的形式互相连接着,构成了类似于无向图的结构。在爬虫算法的中间过程中会维护一个未访问URL列表,一般放在主内存中,可以提高访问效率,访问完毕之后再移除,获取到新的链接之后再次放入。

    爬虫队列

    爬虫队列指的是爬虫访问到新的链接时,所存入队列的方式,因为这关系到之后将会优化访问哪些未访问的url,如果采用FIFO的方式的话,对应的爬虫就是宽度优先爬虫,就是广度优先算法类似,这个很好理解,还有另外一种就是按照优先队列的方式,这个称之为带偏好的爬虫,这类爬虫他会做的一个操作是会给即将访问的URL一个优先级值,该优先级值会根据页面价值估计计算而得。

    网页链接获取

    了解了爬虫的核心原理之后,就可以往细节里面再去研究,比如获取到了网页内容之后,我们如何去解析或者说是去识别出里面的链接呢,也许你会马上联系到正则表达式去匹配嘛,方便又快捷,但是你忘了一个前提,你所面对的是海量的数据,什么叫做海量,千万级,亿级别的数据。所以我们得重新选择一个好的方式,大体上来说,网页的解析过程可以简单的从超链接中获取url也可以复杂到分析HTML代码,以后者为例,你可以用获取到的HTML源代码构建一个dom树,然后一个深度优先或广度优先的方式去遍历每个标签节点,当然在这部分还可以有很多的算法优化。

    链接提取和规范化

    一般链接不是拿来就可以直接使用的,有些链接会有很多的无效词组成,你需要进行无效词的删除,然后从中提取出有用的url,这有点类似于搜索引擎中构建到排索引时用到的预处理方法类似。

    爬虫陷阱攻击

    爬虫不就是发个http请求嘛,也会对目的主机造成攻击?举个场景就能让大家马上明白,有2个网页,都是某爬虫即将要访问的url,A网页的连接为http://xxxx/a/b,也就是说是指向B网页的,然后B网页的链接为http://xxxx/b/a,也就是指向A网页的,这样就会发生一个很有意思的现象就是,A,B网页不断的爬虫访问,如此循环,最后不仅带宽被爬虫所霸占,还会导致其他正常的服务请求不能被处理,也就是造成了Dos拒绝服务攻击。解决的办法很简单,限制一下对同一个网页的访问次数。

    爬虫道德

    尽管爬虫的功能很单一,就是偶然想某个地址请求请求内容而已,但是如果使用不当,也会造成恶意的影响,尤其是性能很棒的爬虫,会占领一定的Web服务器资源的带宽,极端情况下就是dos攻击嘛。

    礼貌的爬虫

    如何做一个礼貌的爬虫:一个礼貌的爬虫应该在向某台服务器发送请求前,先去解析该服务器上的robots.txt文件,这个文件规定了任何爬虫不能爬取的内容,不仅如此,爬虫还需遵守爬虫阻止协议(虽然说并没有什么明文的规定)。当然如果某些爬虫不遵守上面说的规则,一旦被发现,可以马上封杀此ip,比如说短时间内高频率的访问某站点,就很容易被发现。

    爬虫小应用

    这里举一个应用到爬虫的小的场景,当然不是搜索引擎的应用场景,某些用户想要在浏览网页的时候屏蔽掉烦人的广告,想要过滤掉此类链接,这时候就可以使用带有部分爬虫功能的去广告插件,爬虫在此的作用就是爬去链接数据,识别是否是广告数据,因为广告一般都是一个大的图片上跟一个链接,识别出之后就能想干嘛干嘛了。

  • 相关阅读:
    HDU 3681 Prison Break 越狱(状压DP,变形)
    POJ 2411 Mondriaan's Dream (状压DP,骨牌覆盖,经典)
    ZOJ 3471 Most Powerful (状压DP,经典)
    POJ 2288 Islands and Bridges (状压DP,变形)
    HDU 3001 Travelling (状压DP,3进制)
    POJ 3311 Hie with the Pie (状压DP)
    POJ 1185 炮兵阵地 (状压DP,轮廓线DP)
    FZU 2204 7
    POJ 3254 Corn Fields (状压DP,轮廓线DP)
    ZOJ 3494 BCD Code (数位DP,AC自动机)
  • 原文地址:https://www.cnblogs.com/bianqi/p/12183946.html
Copyright © 2011-2022 走看看