zoukankan      html  css  js  c++  java
  • 定向数据爬虫和搜索引擎(Directional Spider)设计(一) —— 元素分析

    定向数据爬虫和搜索引擎(Directional Spider)设计(一) —— 元素分析

    前言

    页面定向数据抓取目的就是尽可能的抓取在互联网中获取到你感兴趣的数据。因为是定向抓取,同时需要保证对抓取的数据进行数据加工处理,做到对应的数据规范,方便后期检索。 简单的说这个的数据基础就是通信领域当中信息获取和信号分析。本文从结构上分析我所理解的做搜索引擎需要涉及到的数据关系。 对应的程序设计也需要以此为基础进行设计。程序设计在今后会讲到。同时本文会设计到基本的搜索引擎的知识。

    作者本人进行spider是新闻数据相关的spider。目前已经完成了2个版本,正在进行第三个版本的开发。

    第一版实现的是全网通过模板配置进行数据抓取,思想是编写一些成型的模块,通过对应的模板,获取页面上面对应的数据,url分析也通过模板配置来识别对应url。 这个版本相当于trs公司的一个叫雷达的产品。 优点是能通过配置获取特别规范的数据,甚至包括一般spider说不能获取到的js中ajax的数据和页面分页等数据。获取的数据同时也可以进行结构样式的再加工。 缺点是,一个页面需要一套模板。同时获取url的页面有限,来源一般是root页面,下层分类页面没有去实时抓取。

    第二版实现了url的聚类分析,所使用的思想就是搜索引擎设计中的url聚类和url权重分析,通过页面指向和页面的搜索引擎相关数据获取,分析页面相关的聚类,并且进行数据抓取。 这一版本,解决了第一版本数据来源的问题。同时也增加了数据分类。

    总结前2个版本的经验,结合一些搜索引擎的知识,通信数据处理和简单的机器学习,总结出以下内容。这个也是我第三spider的开发纪实。

    备注:这个spider其实就是一个信息获取和信息加工的过程。下文所说的数据和关系在数据处理的时候都涉及到权重的问题。 表示一个数据分类, 表示具体数据, 表示数据和数据的关系。
    联系作者: zhangwenhao3@sina.com
    请保留文章出处:http://www.cnblogs.com/zhangwenhao/p/3747837.html
    本文来源于博客园,原始链接

    数据之一:url

    url是搜索引擎的重要组成部分。今后进行数据处理的时候,需要涉及到以下数据形式。

    hosthost是指url根路径,涉及到的关系有: host1等价于host2,不同的host,其实很可能指向的是同一个主站,就是有的host对应的ip不一样,也会出现对应的页面是一样的情况。所以不同host有相关性,且有权重。

    url结构url的结构包含了url当中分级,或者一些关键词,或者布局样式都是具有信息量的,这些都能今后数据处理带来方便。 比如 "http://slide.ent.sina.com.cn/star/h/slide_4_704_81542.html#p=1" 这个链接,"slide"表示了这个url会是一个图集,star会表示这个是原始网站的一个基本分类,数字可能具有日期或者文章id等信息,p表示页码。涉及到的关系有: url需要判断这个参数是否有用url参数注意:有的url参数是变异的,不一定是?后面跟参数。

    参数参数是指url所携带的参数,有的参数会指向不同的页面(这种写法是搜索引擎不友好的形式,一般seo不会采用这种写法)。但是很多参数是对页面数据没有实际要求的,这个时候需要将对应的参数去掉,这样才能确定url相关性,涉及到的关系有: url判断这个参数是否有用url参数注意:有的url参数是变异的,不一定是“?”后面跟参数。例如上面说说的url就是#号后面跟着“#”。

    url聚类表示url聚类表示,是需要搜索引擎处理出来的,可以标识一个url属于哪一个分类(比如可以标识出这个页面是否是我们需要抓取的页面,很多时候也可以标识出这个页面今后的页面处理方式),这个完全看设计者的能力了。涉及到的关系有: url属于url聚类url聚类辅助找到页面的对应处理方法页面处理方法

    数据之二:页面头信息

    页面头信息中与spider比较相关的信息一般是Expires,和Last-Modified这2个时间,这2个时间用于标识缓存过期时间和页面的最后修改时间。但是这个可以被我们的spider用于判断是否一个url的权重。 在成熟的商业搜索引擎中,spider被分为很多种。对于权重很高的网页,会有专门的spider非常频繁的去遍历抓取改网页。但是对于权重很低的网页,spider可能只会爬取主站。然后spider会根据内容决定是否增加一个网站的权重。 我们事先没有这些信息量,也没有那么大能力像商业网站这样分析出准确的权重,所以这2个时间可以成本很低的让我们获取一个页面的权重,我们可以认为经常更新的页面,就是权重高的页面。

    数据之三:页面给spider的信息

    页面上有的信息,其实就是给spider读取的信息。seo为了提高排名,一般会维护这些数据。具体数据有:

    meta信息meta信息会包含很多已经处理好的页面信息。比如页面的描述,页面的关键词。甚至包含这个页面时是否需要被追踪(noindex,nofollow)。有的互联网还有很多自定义的信息。

    标签中的rel="nofollow"属性这个属性表示不需要追踪该标签的href属性对应的页面。比如外链的时候,或者一些网站的叶子页面和叶子页面中常使用到。

    数据之四:页面结构和页面数据

    互联网上的页面,是将展示的信息给读访问者看的。面向的是浏览器。spider要获取出页面我们要的定向数据,需要直观的是通过页面结构去获取页面的对应数据。

    页面标签结构以新闻获取来说,一个栏目,甚至一个主站内的所有新闻页面,都是以相关的页面标签结构来组织页面的。 差异一般是一个页面不会包含全部的元素。比如有的新闻有图集,有的新闻有视频,有的新闻会有相关阅读链接栏目,有的新闻有分页等等。 同时这些结构也决定具体数据的位置,程序需要通过设计,实现这个过程。

    笔者也是边学边写代码,边更新这个博客的,很多没注意到到的地方,请大家多指教。 未完,更新中。2014年5月27日
  • 相关阅读:
    【转载】ASP.NET Core读取appsettings.json配置文件信息
    node.js安装教程(简单易懂)
    记一次使用typescript模板初始化React项目的几个问题
    es分页查询 scroll
    Redis5设计与源码分析 (第15章 有序集合相关命令的实现)
    Redis5设计与源码分析 (第14章 集合相关命令的实现)
    Redis5设计与源码分析 (第13章 列表相关命令的实现)
    Redis5设计与源码分析 (第12章 散列表相关命令的实现)
    Redis5设计与源码分析 (第11章 字符串相关命令的实现)
    Redis5设计与源码分析 (第9章 命令处理生命周期)
  • 原文地址:https://www.cnblogs.com/zhangwenhao/p/3747837.html
Copyright © 2011-2022 走看看