搜索引擎爬虫数据抓取
- 格式:docx
- 大小:8.79 MB
- 文档页数:49
2.简单介绍爬虫的作用。
爬虫(Web Spider)是一种自动化程序,用于在互联网上浏览、收集和提取信息。
它模拟人类浏览器的行为,通过发送HTTP请求并
解析HTML页面,从中提取所需的数据。
爬虫的作用非常广泛,以下是几个方面的简单介绍:
1. 数据采集和抓取,爬虫可以自动访问网页,并从中提取所需
的数据。
这对于需要大量数据的研究、分析、监测等工作非常有用。
例如,搜索引擎的爬虫能够抓取互联网上的网页内容,以建立搜索
引擎的索引数据库。
2. 网站更新和监测,很多网站需要定期更新内容,例如新闻网站、博客等。
爬虫可以定期访问这些网站,抓取最新的内容,并进
行更新。
同时,爬虫也可以用于监测网站的变化,例如监测竞争对
手的价格变动、产品信息的更新等。
3. 数据分析和挖掘,爬虫可以用于获取大量的数据,然后进行
分析和挖掘。
例如,在市场调研中,可以通过爬虫获取竞争对手的
产品信息和价格,以便进行比较和分析。
在舆情分析中,可以通过
爬虫获取社交媒体上的评论和观点,进行情感分析和趋势预测。
4. 链接检测和网站地图生成,爬虫可以用于检测网站上的链接是否有效,是否存在404错误等。
同时,爬虫还可以生成网站的地图,以便搜索引擎更好地索引和抓取网站的内容。
5. 自动化测试和漏洞扫描,爬虫可以用于自动化测试网站的功能和性能,以及检测网站的安全漏洞。
通过模拟用户的行为,爬虫可以模拟各种情况下的操作,并检查系统的响应和漏洞。
总之,爬虫在互联网数据的获取、处理和分析中起着重要的作用,它可以节省人力成本,提高效率,为各种应用场景提供支持。
数据爬取基础1. 什么是数据爬取?数据爬取(Data Crawling),又称为网络爬虫(Web Spider)或网络机器人(Web Robot),是指通过自动化程序从互联网上获取数据的过程。
数据爬取可以用于从各种网站、社交媒体平台、论坛等获取特定的数据,如文本、图片、视频等。
2. 数据爬取的应用领域数据爬取在各个领域都有广泛的应用,以下列举了几个常见的应用领域:2.1 搜索引擎搜索引擎是最常见和广泛使用数据爬取技术的领域之一。
搜索引擎通过自动化程序不断地抓取互联网上的网页,并建立索引,以便用户能够方便地找到所需信息。
2.2 电子商务电子商务平台需要实时监测竞争对手的价格和产品信息,并及时更新自己的商品信息。
通过数据爬取,可以快速获取竞争对手的商品信息,并进行分析和比较。
2.3 社交媒体分析社交媒体平台如Facebook、Twitter等每天产生大量用户生成内容(User Generated Content),包括文字、图片、视频等。
通过数据爬取,可以获取用户在社交媒体上的行为和观点,进行舆情分析、用户画像等。
2.4 新闻媒体新闻媒体需要时刻关注各种信息源,及时报道新闻事件。
通过数据爬取,可以从各大新闻网站抓取最新的新闻内容,并进行分类、归档和展示。
2.5 学术研究学术研究需要获取大量的文献资料和数据集。
通过数据爬取,可以从学术搜索引擎、数据库等获取所需的文献和数据。
3. 数据爬取的基本原理数据爬取的基本原理是通过自动化程序模拟人类浏览器行为,访问网页并提取所需的信息。
以下是数据爬取的基本步骤:3.1 发送HTTP请求使用编程语言中的HTTP库发送HTTP请求到目标网页的URL,并接收服务器返回的响应。
3.2 解析HTML解析服务器返回的HTML响应,提取出页面中所需的信息。
常用的HTML解析库有BeautifulSoup、XPath等。
3.3 提取数据根据页面结构和规则,使用正则表达式、CSS选择器或XPath等方法提取所需的数据。
搜索引擎工作原理搜索引擎是我们日常生活中时常使用的工具,它可以匡助我们快速找到所需的信息。
但是,不少人并不清晰搜索引擎是如何工作的。
本文将为大家详细介绍搜索引擎的工作原理。
一、爬虫抓取网页1.1 爬虫是搜索引擎的重要组成部份,它会定期抓取互联网上的网页内容。
1.2 爬虫会从一个种子网址开始,然后通过链接不断地向下抓取其他网页。
1.3 爬虫会根据网页的重要性和更新频率来确定抓取的优先级。
二、建立索引2.1 爬虫抓取到的网页内容会被存储在搜索引擎的数据库中,这些内容会被分析并建立索引。
2.2 索引是搜索引擎的核心部份,它包含了网页的关键词、链接、标题等信息。
2.3 索引的建立会根据网页的内容、链接质量等因素来确定网页的排名。
三、检索与排序3.1 当用户输入关键词进行搜索时,搜索引擎会根据索引中的信息进行检索。
3.2 检索过程会根据关键词的匹配程度、网页的质量等因素来确定搜索结果。
3.3 搜索结果会按照像关性进行排序,通常排名靠前的网页质量更高。
四、更新与优化4.1 搜索引擎会定期更新索引,以保证搜索结果的准确性和时效性。
4.2 网站所有者可以通过优化网站结构、内容等方式来提高网站在搜索引擎中的排名。
4.3 搜索引擎也会根据用户的搜索行为和反馈来不断优化搜索算法。
五、隐私与安全5.1 搜索引擎会采集用户的搜索记录和行为数据,以提供更好的搜索结果。
5.2 用户可以通过设置来保护自己的隐私,例如清除搜索记录、使用匿名搜索等方式。
5.3 搜索引擎也会采取一系列措施来保护用户的隐私和数据安全。
总结:搜索引擎的工作原理是一个复杂的系统,包括爬虫抓取、建立索引、检索与排序、更新与优化、隐私与安全等多个环节。
了解搜索引擎的工作原理有助于我们更好地利用搜索引擎,获取更准确、有效的信息。
爬虫的四个步骤爬虫技术是指利用程序自动化地浏览很多网页,并抓取它们的信息的过程。
爬虫技术在信息爬取、搜索引擎、商业竞争等领域应用广泛。
想要实现一个高效的爬虫程序,需要遵循一定的规范和流程,本文将介绍爬虫的四个步骤,它们是页面抓取、数据提取、数据存储和数据呈现。
第一步:页面抓取页面抓取是爬虫技术的第一步。
抓取的目标是将网站上的所有内容下载到本地,这些内容包括网页、图片、音频和视频等。
页面抓取是爬虫程序中最基本的过程之一,爬虫程序第一次访问目标网站时,会向目标服务器发送请求。
在拿到响应内容后,需要从中解析出有意义的信息,包括HTML源码、页面中的图片、JS文件、CSS文件等。
获取到这些信息后,需要判断响应状态码是否正常,是否符合预期,如果出现错误需要做出相应的处理。
在实现页面抓取过程中,可以使用多种语言和框架。
常用的语言有Python、Java、Node.js,常用的框架有Requests、Scrapy、Puppeteer等。
无论使用什么语言和框架,都需要注意以下几个问题:1. 多线程和协程在进行页面抓取时,需要考虑到性能和效率,如果使用单线程,无法充分利用网络资源,导致程序运行效率低下。
因此,需要采用多线程或协程的方式来处理比较复杂的任务。
多线程可以利用CPU资源,充分发挥计算机的性能。
协程可以利用异步非阻塞技术,充分利用网络资源。
2. 反爬机制在进行页面抓取时,需要考虑到反爬机制。
目标网站可能会采取一些反爬措施,如IP封禁、验证码验证等。
为了克服这些问题,需要采用相应的技术和策略,如IP代理、验证码识别等。
3. 容错处理在进行页面抓取时,需要考虑到容错处理。
爬虫程序可能会因为网络连接问题或者目标网站的异常情况导致程序运行出现异常。
因此,需要实现一些错误处理机制,如重试机制、异常捕获处理机制等。
第二步:数据提取数据提取是爬虫过程中比较重要的一步。
在页面抓取完成之后,需要将页面中有意义的信息提取出来。
搜索引擎的数据原理是什么搜索引擎是一种可以扫描互联网上的网页并将其组织、索引和排序的软件系统。
它的主要功能是根据用户的搜索词在已经索引的网页中查找相关的结果并返回给用户。
搜索引擎的数据原理包括以下几个方面:1. 网页抓取和索引搜索引擎通过爬虫程序(也称为蜘蛛)自动抓取互联网上的网页。
爬虫首先从一个或多个起始网页开始,然后通过网页上的链接跟踪到其他网页,逐渐抓取到全网的信息。
爬虫将抓取到的网页存储在搜索引擎的数据库中,并提取其中的文本内容、URL等元数据,并建立索引以便后续的查询和排序。
2. 倒排索引搜索引擎使用倒排索引来加快查询速度。
倒排索引是一种将文档与包含该文档的所有位置关联起来的数据结构。
它将每个词映射到包含该词的文档和出现的位置,以便通过词来查找相关的文档。
倒排索引中的索引项被称为倒排列表,其中包含了词、文档ID和位置等信息。
倒排索引可以通过哈希表或者树等数据结构来实现。
3. 分词和词性标注搜索引擎在构建索引之前需要对文本进行分词,将长的文本切分成短的词语。
分词的目的是将文本处理成一个个独立的词语,以便在查询时能够更准确地匹配用户的搜索词。
在分词的过程中,搜索引擎还会对词语进行词性标注,标注词语的词性有助于后续的查询和排序。
4. 查询处理和排序当用户输入一个搜索词时,搜索引擎会首先根据用户的查询意图进行查询处理。
查询处理一般包括去除停用词(如“的”、“是”等无意义的词语)、词干提取(将词语还原为其原始的词干形式)等操作,以提高查询的准确性。
然后,搜索引擎将查询词与倒排索引进行匹配,找出包含该词的文档。
搜索引擎根据一定的算法对匹配到的文档进行排序,以便将最相关的文档展示给用户。
5. 网页排名和算法搜索引擎通过一系列的算法来确定网页的排名顺序。
常见的算法有PageRank、TF-IDF和BM25等。
其中,PageRank算法通过分析网页之间的链接关系来确定其重要性和排名。
TF-IDF(词频-逆文档频率)算法通过计算词语在网页中的重要性来决定排名。
搜索引擎的原理
搜索引擎是一种能够帮助用户在互联网上查找信息的工具,它的原理主要包括三个方面,爬虫抓取、索引建立和检索排序。
首先,搜索引擎通过爬虫抓取来获取互联网上的信息。
爬虫是一种自动程序,它会按照一定的规则在互联网上抓取网页,并将这些网页的内容下载到搜索引擎的服务器上。
爬虫会根据链接的深度和页面的重要性来确定抓取的优先顺序,从而保证搜索引擎能够覆盖尽可能多的网页。
其次,搜索引擎会对抓取到的网页进行索引建立。
索引是一种结构化的数据,它包含了对网页内容的关键词、链接、图片等信息的索引。
搜索引擎会对抓取到的网页进行分词处理,将其中的关键词提取出来,并建立倒排索引,以便用户在搜索时能够更快地找到相关的信息。
最后,当用户在搜索引擎中输入关键词进行检索时,搜索引擎会根据索引中的信息进行检索排序。
检索排序是根据用户的搜索意图和网页的相关性来确定搜索结果的排名。
搜索引擎会根据网页的关键词出现频率、链接的质量、网页的权威性等因素来对搜索结果进行排序,从而让用户能够更容易地找到自己需要的信息。
总的来说,搜索引擎的原理是通过爬虫抓取、索引建立和检索排序来帮助用户在互联网上查找信息。
这一原理的实现涉及到大量的技术和算法,包括网页抓取、分词处理、倒排索引、链接分析等方面的内容。
通过不断地优化和改进,搜索引擎能够更好地满足用户的信息检索需求,成为人们日常生活中不可或缺的工具。
爬虫技术和网站数据抓取方法随着互联网的发展,数据成为了一种可贵的资源,越来越多的人开始关注数据的获取和利用。
在数据的获取中,爬虫技术和网站数据抓取方法已经成为非常流行的方式之一。
本文将简单介绍爬虫技术和网站数据抓取方法,并探讨它们的应用。
一、爬虫技术1.1 爬虫的概念爬虫(Spider)是指一种在互联网上自动获取信息的程序。
它模拟浏览器行为,通过对网页中的链接进行解析和跟踪,自动获取网页中的数据。
爬虫技术主要用于数据抓取、搜索引擎、信息源汇聚等领域。
1.2 爬虫的工作原理爬虫的工作过程可以简单概括为先请求网页,再解析网页,最后抽取数据三个步骤。
首先,爬虫会发送请求到指定网页,获取网页的源代码。
然后,爬虫会对获取的网页源代码进行解析,找到网页中包含的链接和数据。
最后,爬虫会抽取有价值的数据,并进行存储和处理。
1.3 爬虫的分类根据不同的目的和需求,爬虫可以分为通用网页爬虫、数据整合爬虫、社交媒体爬虫和搜索引擎爬虫等。
通用网页爬虫:主要用于搜索引擎,通过搜索引擎抓取尽可能多的网页,并且对网页进行索引,提高搜索引擎的检索效率。
数据整合爬虫:主要用于整合互联网上的数据,如新闻、股票数据、房价数据等,以便于大众获取和使用。
社交媒体爬虫:主要用于在社交媒体平台上获取用户的信息,如微博、微信等。
搜索引擎爬虫:主要是为了让搜索引擎收录网站的数据,从而提升网站排名。
二、网站数据抓取方法2.1 网站数据抓取的目的网站数据抓取主要是为了收集和分析网站上的数据,从而了解网站的性质、变化、趋势,为网站提供参考和决策依据。
2.2 网站数据抓取的工具与技术网站数据抓取可以使用多种工具和技术,如爬虫技术、API接口、网站抓取软件等。
(1)爬虫技术爬虫技术是一种高效的网站数据抓取方式,可以快速有效地获取网站上的数据。
但是需要注意网站的反爬机制,防止被网站封禁或者被告上法庭。
(2)API接口API(Application Programming Interface)接口是一种标准化的数据交换格式,是实现不同应用程序之间的数据传递的重要方式之一。
第1篇随着互联网的快速发展,网络爬虫技术在数据采集、信息搜索、市场分析等方面发挥着越来越重要的作用。
然而,与此同时,网络爬虫引发的侵权纠纷也日益增多。
本文将通过对几个典型的网络爬虫法律案例进行分析,探讨网络爬虫的法律问题。
一、案例一:腾讯诉360不正当竞争案案情简介:2012年,腾讯公司发现360公司通过其旗下的“360浏览器”等软件,擅自抓取腾讯网站上的数据,并在其产品中展示,导致腾讯公司的用户数据泄露。
腾讯公司认为360公司的行为侵犯了其合法权益,遂将360公司诉至法院。
法院判决:法院经审理认为,360公司的行为侵犯了腾讯公司的数据获取权和数据展示权,构成不正当竞争。
据此,法院判决360公司立即停止侵权行为,并赔偿腾讯公司经济损失及合理费用。
案例分析:本案中,360公司通过爬虫技术抓取腾讯网站上的数据,并在其产品中展示,侵犯了腾讯公司的数据获取权和数据展示权。
根据《中华人民共和国反不正当竞争法》的相关规定,不正当竞争行为包括侵犯他人商业秘密、侵犯他人知名商品特有名称、包装、装潢等。
本案中,360公司的行为符合不正当竞争的构成要件,因此法院认定其侵权行为成立。
二、案例二:新浪微博诉“快播”侵权案案情简介:2014年,新浪微博发现“快播”公司通过其软件抓取微博用户数据,并在其平台上展示,侵犯了微博用户的隐私权。
新浪微博将“快播”公司诉至法院。
法院判决:法院经审理认为,“快播”公司的行为侵犯了微博用户的隐私权,构成侵权。
据此,法院判决“快播”公司立即停止侵权行为,并赔偿新浪微博经济损失及合理费用。
案例分析:本案中,“快播”公司通过爬虫技术抓取微博用户数据,并在其平台上展示,侵犯了微博用户的隐私权。
根据《中华人民共和国侵权责任法》的相关规定,未经他人同意,擅自收集、使用他人个人信息,侵犯他人隐私权的,应当承担侵权责任。
本案中,“快播”公司的行为符合侵权责任的构成要件,因此法院认定其侵权行为成立。
三、案例三:京东诉当当网不正当竞争案案情简介:2015年,京东公司发现当当网通过爬虫技术抓取京东网站上的商品信息,并在其平台上展示,导致京东公司的商品信息被不当利用。
爬虫读取数据的方法
爬虫读取数据的方法有很多种,以下是一些常见的方法:
1. 直接请求数据:对于一些公开可访问的网站,可以直接使用 Python 的requests 库来发送 HTTP 请求并获取响应。
这种方法简单快捷,但需要网站提供 API 或数据接口。
2. 使用第三方库:有一些第三方库可以帮助爬虫读取数据,如BeautifulSoup、Scrapy、Selenium 等。
这些库可以解析 HTML 或 XML 结构,提取所需的数据。
3. 使用浏览器自动化工具:有些网站需要用户登录或使用 JavaScript 动态加载数据,这种情况下可以使用浏览器自动化工具(如 Selenium)模拟浏览器行为,获取网页内容。
4. 网络爬虫框架:有一些 Python 爬虫框架可以帮助简化爬虫的开发过程,如 Scrapy、PySpider 等。
这些框架提供了丰富的功能和组件,可以快速构建高效的爬虫。
5. 数据抓取:有些网站禁止爬虫抓取数据,此时可以使用一些技术手段绕过反爬虫机制,如使用代理 IP、更改 User-Agent、设置延时等。
需要注意的是,在使用爬虫读取数据时,要遵守相关法律法规和网站使用协议,尊重他人的劳动成果和隐私权。
C语言网络爬虫网页抓取和数据提取随着互联网的快速发展,大量的信息和数据被存储在各种网页上。
而为了获取这些数据,人们需要花费大量的时间和精力来手动浏览和提取。
为了解决这个问题,网络爬虫应运而生。
网络爬虫是一种自动化程序,它可以模拟人的行为,遍历互联网上的网页,并将所需的数据提取出来。
而C语言作为一种高效且强大的编程语言,能够提供很好的支持来实现网络爬虫的功能。
接下来,我们将讨论C语言网络爬虫的实现以及数据的提取。
一、网页抓取1. 连接与下载在开始编写网络爬虫之前,我们首先需要确保能够与目标网站建立连接,并成功下载网页内容。
这可以通过使用C语言的网络编程库来实现。
例如,我们可以使用socket库来建立与服务器之间的连接,并通过HTTP协议发送请求,并接收相应的响应内容。
2. 解析与处理下载网页之后,我们还需要对其进行解析和处理。
通常,网页的内容是以HTML或XML等数据格式呈现的,我们可以使用正则表达式或者相关的解析库,如libxml或libcurl等,来提取出需要的数据。
同时,我们还可以使用C语言的字符串处理函数来整理和清洗数据。
二、数据提取1. 数据抓取规则在实现数据提取之前,我们需要定义一些数据抓取的规则。
例如,我们可以通过指定特定的HTML标签或CSS选择器来定位目标数据所在的位置。
这样,我们就可以根据这些规则来提取出我们所需的数据。
2. 数据存储与处理提取到的数据可以存储在内存中,也可以写入到文件或数据库中。
对于较小规模的数据集,我们可以使用C语言的数据结构来进行存储和处理。
而对于较大规模的数据集,我们可以选择使用数据库来存储和管理数据,如MySQL或SQLite等。
三、其他考虑因素1. 网络爬虫的限制在进行网络爬虫时,我们需要遵守一些道德准则和法律法规。
不同的网站可能会有不同的爬虫限制,例如限制访问频率、限制爬取深度等。
我们需要审慎选择爬取的网站,并尊重网站的规则。
2. 异常处理与错误监测在编写网络爬虫时,我们需要考虑到各种异常情况,如网络连接异常、网页解析错误等。
简单搜索引擎模型A Simple Scratch of Search Engine作者史春奇,搜索工程师,中科院计算所毕业,chunqi.shi@/shichunqi计划:1,需求迫切07/06完成2,搜索引擎简单模型07/08完成3,信息导航模型07/16完成1/3 数据抓取07/30 预处理4,商家推广模型5,未来本文是学习搜索引擎的涂鸦草稿,高深读者请拐弯到:/IR-Guide.txt(北大搜索引擎小组--信息检索指南)简单搜索引擎模型 (1)A Simple Scratch of Search Engine (1)第一章需求迫切 (2)一)泛信息化 (2)二)泛商品化 (2)第二章导航模型--草根需求信息 (3)第一节最直观简单模型 (3)第二节互联网简单模型 (5)1.发展历史 (6)2.大陆互联网现状 (7)3.草根需求 (10)第三节网页抓取简单模型 (10)1.最简单Spider抓取模型 (11)2.最简单Spider调度模型 (12)3.最简单Spider调度质量模型 (15)4.最简单Spider调度策略模型 (18)5.Spider的常见问题 (23)第四节网页预处理简单模型 (23)1.质量筛选(Quality Selection) (24)2.相似滤重(De-duplicate) (35)3.反垃圾(Anti-spam) (43)第五节索引存储简单模型 (48)第六节检索框架简单模型 (48)信息检索评价指标 (48)第三章推广模型--商家需求客户 (49)第四章未来 (49)第一章需求迫切之前说过,搜索引擎是互联网大爆炸后的新生事物,他的成功来源于两个方面高度发展,一个是泛信息化,一个是泛商品化。
一)泛信息化分为两个方面,一方面是信息的类型呈百花齐放,另一方面是信息的数量呈海量增长。
1, 信息种类繁多。
大家切身感受到的是多媒体娱乐和社交联系在互联网上变得明显的丰富起来。
信息种类繁多不可避免会导致搜索引擎的种类繁多起来。
而搜索引擎种类繁多这一点,你可以看一下Google,Baidu 提供的服务是多么繁多,你就知道了。
参考百度更多(/more/),Google 更多(/intl/en/options/),这些还不包括实验室(Lab)的产品。
我们换个角度看这个问题,看看现在已经有多少种搜索引擎来满足信息繁多的各种需求了,Wiki 的搜索引擎列表(/wiki/List_of_search_engines)有一个分类,显示了10种类型,分别是,1)论坛,2)博客,3)多媒体(音乐,视频,电视),4)源代码,5)P2P资源,6)Email,7)地图,8)价格,9)问答信息,10)自然语言。
我们知道信息爆发都是由需求带动的,那么目前有多少需求已经有搜索引擎在满足了呢?下面列出了14种类型,分别是,1)普通[知识],2)地理信息,3)会计信息,4)商业信息,5)企业信息,6)手机和移动信息,7)工作信息,8)法律信息,9)医疗信息,10)新闻信息,11)社交信息,12)不动产信息,13)电视信息,14)视频游戏信息。
2,信息海量增长。
类似,我们从搜索引擎的发展,反向来看信息增长。
搜索引擎的索引量是选择收录入库的网页数,肯定小于或者远小于互联网的信息量。
最早Yahoo是人工编辑的目录索引,就几万和几十万的级别。
到Infoseek,Google早期等的几百万的索引量。
到Baidu早期的千万、上亿的索引量。
到现在Google等上千亿的索引量。
如果你看一个网页要1秒钟,1000亿网页要看3171年,而且不吃不喝,一秒不停地看。
如果你是愚公世家,你的祖辈在大禹治水的时候就开始看网页,到现在你还没看完。
因此草根(Grassroots)用户需要搜索引擎来满足它们的信息的导航,草根用户追求免费,快捷和有效的服务。
二)泛商品化也分为两个问题,一方面,满足新需求的商品种类繁多。
另一方面,满足老需求的新商品的种类繁多。
现在有很多新产品,你如果不推广,很多有需求的人都找不到你,或者找到的不是你。
举例啊,如果你不看新闻广告,你都不知道有人在给狗狗举行隆重的葬礼,那么你知道去那里找个满意的祭司么?有人告诉你说网上。
那么你知道哪家的服务好么?又有人告诉你说找论坛看评论。
同样,你了解商家怎么推销自己的产品么?他们可以选择在网上打广告,可以找搜索引擎帮助推广。
现在产品的确太多了,商家太多了,让你都不知道何去何从。
就说最古老的饮食,现在遍地是餐饮,选哪个好了?如果某商家嫌客户少,想打折推广。
古老的方式是挂大旗,发传单。
而今你要想让更多的人看到,可以去互联网花钱推广,可能花同样的钱,被推广的对象还是有迫切需求的潜在用户。
这样你的广告费用花的会更有效果。
而搜求引擎广告,满足信息查询需求的同时,只要搜索的用户足够多,就会有很多提供服务的商家想请你帮忙做推广,满足他们脱颖而出的广告需求。
因此商家需要搜索引擎来满足它们的广告的推广,商家追求用户和利润是愿意付费的。
第二章导航模型--草根需求信息信息爆炸给搜索带来人气,商品爆炸迫使商家追逐人气,两者的结合使得搜索引擎成为互联网的宠儿。
第一节最直观简单模型在谈及基础前,还有些基础,插曲一下:1.什么是顺序文件(Sequential File),什么是随机文件(Random File),两者的优缺点?2.什么是索引(Index),什么是哈希(Hash),两者有关联么?3.什么是计算机的金字塔存储系统(Storage Pyramid),为啥是金字塔状?那寄存器(Register),高速缓存(Cache),内存储器(Internal Storage),外存储器(External Storage)等分别有什么优缺点?在理想的场景下,搜索引擎能够对互联网内容进行理解,并且对用户的提问也能够理解,然后直接给出用户需要的结果。
但是目前计算机技术的发展,搜索引擎还只能对互联网的页面进行索引(Index),然后对用户提供的查询词进行分解成关键词(Keywords/Term)。
然后完成基于关键词的搜索(Retrieval)。
这样就搜索引擎就需要首先划分成“网页获取”,“建索引”,“查询”,这三个大模块,使得数据流从“互联网”保存到“网页库”,然后到“索引库”,再到检索服务器,最后流向用户,见图(1.1)。
网页获取:能够及时地,全部地获取(复制)整个互联网的所有的网页。
我们知道互联网首先已经是海量的,其次互联网还在动态变化,每一秒都在变化(增更减)。
假如我们的存储足够大,读取互联网数据的能力足够快。
那么每天将互联网全部复制一次,就可以满足要求。
显然这是不可能实现的。
那么怎么抓取才能尽可能完整地(entirely),及时地(timely)获得互联网数据呢?建索引:将全部网页,按关键词索引。
由于文档的数量非常大,并且文档的价值不一样。
要是能将所有新获取的页面,在每天抓完之后,当天就能索引完成(fast indexing),并且索引的访问快速(efficient accessibility),而且索引的存储空间(small storage space)较小。
并且索引的全部是有意义(valuable)的页面。
显然有点像又要马儿好,又要马儿不吃草,是难以完美地实现的。
那么如何高效地进行索引成为这个阶段的核心问题。
高效地索引成为这个阶段的核心目标。
查询:对用户的查询词分解成索引能处理的关键词(Terms),其次查找匹配的文档(resemblance),再将文档排序(ranking)后返回给用户。
图(1.1),最直观数据流模型网页库:保存网页数据,或保存成自定义结构化数据,或者文本块。
为了提高读写性能,一般会顺序保存。
为了增加空间利用率,很可能进行压缩写入,解压读出。
当然网页的相关属性也会保存到网页库,为的是流水线处理,尽量减少读写(IO)次数,从而减少处理时间和磁盘/闪盘的损耗。
因为互联网的网页数量实在太大了。
索引库:索引库直观上从存储上来说可以是磁盘/闪盘上的一组索引文件。
但是要真正完成索引机制—快速查询或者检索,必然要对应到内存的数据管理。
因此会有对应的索引架构,对索引数据进行金字塔式地管理。
一般是内存CACHE->内存高层索引结构->内存底层索引结构->磁盘/闪盘高层索引结构->磁盘/闪盘文件,这样一个类似的金字塔结构(Pyramid Hierachy)。
并且为了进一步提高效率,会采用多机并发,很可能是集群(Cluster)或者分布式(Distributed)的架构。
另外从索引机制上来看,目前主要是倒排索引(Inverted Index)和顺序(Sequential)或者哈希(Hashing)正排索引的综合体。
倒排索引做到高效地检索,正派索引可以在保证效率的前提下,极大地减小倒排索引的索引内容的大小。
因此很是一个综合体架构。
检索服务器:直观上来看,检索服务器做到人机WEB服务接口。
因此可能采用MVC(Model-View-Controller)的模型来剥离WEB和数据(DATA)。
另外检索服务器又要做到查询比较,涉及到相似性(Resemblance)和排序(Rank)的机制,也就是说在WEB和DATA之后,必然还有一层进行检索(Retrieval)功能,因此,检索架构很可能或者至少是一个Web-Data-Retrieval的三层架构。
而为了分流用户群和增加安全性(不要把所有鸡蛋放到一个篮子里),也会结合采用分流并行的架构。
有了数据流模型,不可避免要进行数据处理,数据处理是搜索引擎公司(Google,Baidu,Yahoo等)的核心竞争力,会涉及到复杂的算法和架构。
另外,又是研究领域的热点和难点,会有TREC,SIGIR,WWW等很多会议对各方面进行创新。
同时,开源界也在发力。
首先,数据处理大体以用户可见与否,分成后端和前端两个部分。
将网页库和索引库相关联的部分,称为后端。
而和互联网与查询词相关联的部分称为前端。
后端和信息检索(Information Retrieval)领域更贴近。
前端和WEB技术(Web Technology)更贴近。
自此,开始慢慢学习后端模型,这是看不见得的竞争力,见图(1.2)。
完成“数据获取”的数据处理模型被称为爬虫Spider,从“互联网”获取数据,更新到本地“网页库”的核心程序被称为Spider或者Crawler。
一方面,Spider和“互联网”之间要通过Schedule 来进行数据获取。
另外一方面,Spider又要将数据Update到“网页库”。
完成“建索引”的数据处理模型被称为索引器Indexer,一方面,Indexer获取“网页库”的数据后,要进行一次预处理或者清洗,这也是所有IR领域的常见做法,为了简化处理和优化效果。