3

系统如何确定哪个 html 元素包含有关哪个变量的数据?

HTML5 允许人们标记他们的元素,例如

<div data-productname=BMW>BMW</div>

但是搜索引擎如何处理旧网站呢?

4

6 回答 6

5

这些data-属性供作者用于他们自己的目的,用于“私人使用”。浏览器、搜索引擎和其他软件应该会忽略它们,除非软件专门根据分配给它们的私人含义来使用它们。

所以任何使用它们的搜索引擎都被破坏了。

通常,搜索引擎不会尝试确定哪个 html 元素包含有关哪个变量的数据。它们作用于页面的文本内容,并在一定程度上作用于某些标记元素(如h1,可能被假定为比其他文本具有更高的相对相关性)。

已经并且正在为低级元数据开发系统,这些元数据可以使用例如具有特殊名称的类属性或一些新属性。一些主要的搜索引擎已经在某些方面表达了他们对这一点的支持,特别是参见http://www.schema.org。但在实践中,他们似乎主要根据尚未公开披露的原则对非常大的网站这样做。

于 2012-06-12T04:32:11.740 回答
0

直到语义网发展起来(我不确定它会在何时以及以何种最终形式出现),从纯 HTML 中检索意义确实存在一些问题。如果(不一定是 HTML)页面的发布者不使用某种标准方式来说明哪些数据是什么,那么您(作为搜索引擎的一方)应该自己推断语义。首先,由于“非 HTML”页面的提及是新鲜的,因此存在托管 XML 页面以及 XSL 以在浏览器中呈现的站点。如果您知道所使用的模式或 DTD,XML 会为您提供更多语义信息。(顺便说一句,Wikipedia 确实为他们的 XML 文章提供档案。)如果 XML 没有被使用或没有记录,可以说,还有第二种方法,它需要专家和程序员。专家是分析内容并决定 HTML 页面的哪些部分应被视为存储特定信息的模板的人。例如,您可以为来自某些 Internet 目录的 html 页面的搜索结果精心制作模板,并为每个列出的站点提取类别、评级和其他内容。可以使用任意编程语言(C++、Python 等)从网页中解析和检测这些模板。在此之后,您可以申请一个知名的map-reduce算法或其他方法通过键值对索引提取的数据。如果您查看通常以这种模板化方式处理哪些站点,您会发现它们很大、公开且结构良好(随着时间的推移,结构几乎没有变化)。这对编写和重用模板很有意义。当然,如果相应的站点标记发生变化,同样的专家应该监控数据提取质量并编辑模板。意义的第三个资源是词汇。例如,如果你有一个全面的地理名称、商业公司(包括汽车制造商的子类别)和其他分类的东西,你几乎可以自动在语义索引中找到它们。我说“几乎”,因为您应该根据上下文词对每个命中进行加权 - 在有关计算机的文档中,Java最有可能是关于编程语言,而在旅行社的网站上,它更可能是一个岛屿。

于 2012-06-20T21:20:08.440 回答
0

他们如何获得结构化信息?

他们将解析页面的 html 元素并将它们存储到与搜索引擎本身一样多样化的数据结构中。

一些搜索引擎将索引元信息,但主要的已经开始忽视元标记。

大多数搜索引擎考虑到:

  • 纯文本信息
  • 单词和短语的邻近信息
  • 引用类似信息的链接
  • 页面标题

这是一个有趣的信息图,可以回答您的任何其他问题:http: //ppcblog.com/how-google-works/

于 2012-06-19T16:42:34.420 回答
0

在您的特定示例中,您应该考虑使用 RDFa 来描述 HTML 文档中的数据。你会注意到我没有提到使用微数据,那是因为 RDFa 可以为爬虫提供更丰富、更多方面的数据。在您的特定情况下,您可以利用 GoodRelations 词汇表(用于电子商务、产品和服务)、schema.org 词汇表(借用自 GoodRelations)和 Vehicle Sales Ontology(用于汽车)。请参阅下面的工作示例:

<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(维基百科数据库)中的资源。

于 2012-06-21T12:22:56.220 回答
0

有几种方法可以提取此类信息:

  • 可以使用例如 RDF 或其他元数据描述语言(如schema.org中的那些语言)显式提供结构化信息。
  • 谷歌可能与电子商务业务中的价格比较服务和/或大型个体参与者签订了合同,这允许他们从他们的数据库中检索结构化信息或使用特殊协议。
  • 有一些流行的电子商务引擎,所以如果他们学会如何从特定引擎的 HTML 中提取数据,他们就可以处理大量使用该引擎的个体商店。
  • 为了让蜘蛛识别看起来像产品描述的页面并自动提取一些结构化信息,可以应用启发式方法。很多元素都可以很容易识别,例如产品名称可能是页面顶部的一些文字放在H1标签中,如果有表格,它可能会寻找常见的属性名称,例如“价格”或“颜色”并尝试在表格附近的某个地方找到匹配的值(根据简单的模式识别价格相对容易,许多其他字段也是如此)。如您所知,Google 可以自动提取有关网页导航菜单的信息(无需页面本身的任何帮助),基于对带有导航菜单的典型页面的启发式分析。
  • 现在谷歌最近开始使用完整的 Chrome 渲染引擎渲染网页,甚至运行 JavaScript,他们能够生成整个页面的 DOM 模型,这意味着他们也可以应用“视觉”启发式,比如“产品名称是页面顶部,以比周围环境更大的字体书写”等。我公司的一个产品执行类似的分析,所以我知道这很有可能(尽管计算成本很高)。
于 2012-06-21T19:47:27.003 回答
0

rdfa 和微格式等语义标记支持产品模式。

许多产品网站还希望您以某种格式提供包含产品数据的提要。

于 2012-06-12T02:20:09.303 回答