系统如何确定什么html元素包含有关哪个变量的数据?搜索引擎如何从HTML页面中获取结构化数据?
HTML5允许人们标记他们的元素,如
<div data-productname=BMW>BMW</div>
但如何搜索引擎与旧网站做呢?
系统如何确定什么html元素包含有关哪个变量的数据?搜索引擎如何从HTML页面中获取结构化数据?
HTML5允许人们标记他们的元素,如
<div data-productname=BMW>BMW</div>
但如何搜索引擎与旧网站做呢?
像rdfa和microformats这样的语义标记支持产品模式。
许多产品网站也希望您提供具有特定格式的产品数据的供稿。
data-
属性供作者用于他们自己的目的,用于“私人使用”。它们应该被浏览器,搜索引擎和其他软件忽略,除了专门根据私人的含义分配给他们。
因此,任何使用它们的搜索引擎都会被破坏。
通常,搜索引擎不会尝试确定哪些html元素包含有关哪个变量的数据。他们对页面的文本内容进行操作,在某种程度上对一些标记元素(如h1
,可能被认为比其他文本具有更高的相关性)进行操作。
已经和正在开发系统用于低级元数据,其可以使用例如,具有特殊名称或一些新属性的类属性。一些主要的搜索引擎已经在某些方面表达了他们的支持,尤其是http://www.schema.org。但实际上,根据尚未公开披露的原则,他们似乎主要针对非常大型的网站。
他们如何获得结构化信息?
他们将解析页面的html元素,并将它们存储到与搜索引擎本身不同的数据结构中。
一些搜索引擎会索引元信息,但主要的搜索引擎已经开始忽视元标签。
大多数搜索引擎考虑:
这里是一个有趣的信息图形,可以回答你有任何其他问题: http://ppcblog.com/how-google-works/
直到语义网成长(我不确定,何时以及以何种最终形式出现),从纯HTML中检索含义确实存在一些问题。如果(不一定是HTML)页面的发布者没有使用某种标准方式来说明哪些数据是什么,那么您(作为搜索引擎的一方)应该自己推断语义。首先,由于提及“不是HTML”页面是新鲜的,因此存在用于托管XML页面的站点以及用于在浏览器中渲染的XSL。如果您知道正在使用的模式或DTD,XML会为您提供更多语义信息。 (顺便说一下,维基百科确实提供了以XML格式存档的文章。)如果没有使用XML或者没有文档,可以说,还有第二种方法,这需要专家和程序员。专家是分析内容并决定HTML页面的哪些部分应被视为存储特定信息的模板的人员。例如,您可以为来自某些互联网目录的html页面的搜索结果制定模板,并为每个列出的网站提取类别,评分和其他内容。这些模板可以使用任意编程语言(C++,Python等)从网页中解析并检测到。在此之后,您可以应用众所周知的map-reduce
算法或其他方法通过键值对对提取的数据进行索引。如果你看看哪些网站通常以这种模板化的方式进行处理,你会发现它们是大的,公共的,结构良好的(随着时间的推移,结构几乎没有变化)。这对编写和重用模板很有意义。当然,同样的专家应该监控数据提取质量,并在相应的网站标记中更改某些内容时编辑模板。意义的第三个来源是词汇表。例如,如果您拥有全面的地理名称基础,商店公司(包括自动制造商的子类别)以及其他分类的东西,则可以几乎自动地将它们命名为语义索引。我会说“差不多”,因为你应该重点关注上下文单词 - 在关于计算机的文档中,Java
最可能是编程语言,在旅行社的网站上,它更可能是一个岛。
在您的特定示例中,您应该考虑使用RDFa来描述HTML文档中的数据。您会注意到我没有提及使用Microdata,因为RDFa可以为爬虫提供更丰富,更多面的数据。在您的特定情况下,您可以利用GoodRelations词汇表(用于电子商务,产品和服务),schema.org词汇表(从GoodRelations借鉴)和车辆销售本体(用于汽车)。请看下面的工作例如:
<div prefix="sc: http://schema.org/ gr: http://purl.org/goodrelations/v1# vso: http://purl.org/vso/ns#"
typeof="vso:Automobile gr:ProductOrServiceModel sc:Product"
resource="http://dbpedia.org/page/BMW_1_Series">
<span property="gr:name sc:name">BMW 1 Series</span>
</div>
这暴露了在每一个方面你的数据,使其理解和消耗几乎任何一个搜索引擎(包括语义搜索引擎)。此外,您还可以使用相同的URI来识别您的实例,从而链接到DBPedia(维基百科数据库)中的资源。
有几种方法这方面的信息可以提取: