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

Insert title here

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

前言

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

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

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

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

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

备注:这个spider其实就是一个信息获取和信息加工的过程。下文所说的数据和关系在数据处理的时候都涉及到权重的问题。
表示一个数据分类, 表示具体数据, 表示数据和数据的关系。
联系作者:
[email protected]
请保留文章出处: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)。有的互联网还有很多自定义的信息。

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


未完,更新中。

时间: 2024-10-09 10:33:19

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

定向数据爬虫和搜索引擎(Directional Spider)设计文档

  定向数据网络爬虫和搜索引擎项目设计 (新闻数据抓取.分析.加工.检索) 版本号:            v 1.0.0 编写人:          张  文  豪 日  期:       2014年6月10日 文档说明:这个文档还在编写之中,文章中很多写在“保留”二字的不是每月东西,而是没有写.虽然没有具体实现,但是我觉得我把我的经验和思考都写进去了.虽然对于读者来说这个文档相当粗糙,但是是我一个很看重的东西.如果真的有人愿意认真阅读这篇文章,我会很开心和大家交流探讨,欢迎留言和联系我. [

第三百四十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫数据保存

第三百四十二节,Python分布式爬虫打造搜索引擎Scrapy精讲-爬虫数据保存 注意:数据保存的操作都是在pipelines.py文件里操作的 将数据保存为json文件 spider是一个信号检测 # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy

第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)

第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲-数据收集(Stats Collection) Scrapy提供了方便的收集数据的机制.数据以key/value方式存储,值大多是计数值. 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats 来使用无论数据收集(stats collection)开启或者关闭,数据收集器永远都是可用的. 因此您可以import进自己的模块并使用其API(增加值或者设置新的状态键(stat k

python分布式爬虫打造搜索引擎--------scrapy实现

最近在网上学习一门关于scrapy爬虫的课程,觉得还不错,以下是目录还在更新中,我觉得有必要好好的做下笔记,研究研究. 第1章 课程介绍 1-1 python分布式爬虫打造搜索引擎简介 07:23 第2章 windows下搭建开发环境 2-1 pycharm的安装和简单使用 10:27 2-2 mysql和navicat的安装和使用 16:20 2-3 windows和linux下安装python2和python3 06:49 2-4 虚拟环境的安装和配置 30:53 第3章 爬虫基础知识回顾

第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中

第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如果想判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定.链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢.不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构.它可以通过一

Google搜索排名优化-面向搜索引擎的网站设计

内容摘要:网站在搜索营销方面最主要的缺点: 行业知识:不知道搜索引擎对吸引的新用户的重要性,在搜索引擎排名服务中追求“傻瓜相关”,购买一些其实没有太多实际意义的行业关键词.其实能够用户输入的关键词越多,其目标性越强,这样的客户价值越高.用户能够直接定位到产品具体内容页比到网站首页有价值的多: 发布技术:网站的网页进入Google的索引量非常小,主要是由于大量使用动态网页造成的.需要将动态页面链接改写成静态 链接: 页面设计:页面标题重复,关键词不突出,过渡使用JavaScript脚本/图片/Fl

四十七 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能

elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html 1.创建搜索自动补全字段suggest 自动补全需要用到一个字段名称为suggest类型为Completion类型的一个字段 所以我们需要用将前面的elasticsearch-dsl操作elasticsearch(搜索引擎)增加sugg

30天搞定大数据爬虫项目

详情请交流  QQ  709639943 00.30天搞定大数据爬虫项目 00.零基础实战机器学学习 00.企业级实战 Spark离线和实时电影推荐系统 00.三大项目掌握Storm流计算 00.道路交通实时流量监控预测系统 00.基于Spark2.x新闻网大数据实时分析可视化系统 00.小码哥Java大神班五期 任小龙SSM Spring5 Mybatis SpringMVC 00.Python玩转人工智能框架 TensorFlow 00.web开发级mysql颠覆实战课程 00.微信小游戏入

基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索. 搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩.高可用.对大量信息的索引与搜索都可以在近 乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据,同时提供了全方面的选项,可以对