zoukankan      html  css  js  c++  java
  • 老李谈爬虫 1

    老李谈爬虫

     

     poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。

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

    爬虫算法

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

    爬虫队列

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

    网页链接获取

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

  • 相关阅读:
    nginx解决前端跨域配置
    oracle 空表处理
    (转)Oracle修改表空间为自动扩展
    使用silverlight自定义控件时“给定关键字不在字典中”
    arcengine note:
    Jquery CSS 操作
    Jquery Easy-UI 树形菜单的运用
    Easy-UI data-options总结
    数据库 存储过程初探
    ASP.NET 日志的记录(登录日志和异常日志和操作日志)
  • 原文地址:https://www.cnblogs.com/poptest/p/5163928.html
Copyright © 2011-2022 走看看