【问题标题】:HTML text analysisHTML文本分析
【发布时间】:2011-02-19 15:40:02
【问题描述】:

我有一个爬虫,它从网络上收集文章并将标题和正文存储到数据库中。到目前为止,程序员必须为每个源(通常是 XPath,有时是正则表达式)提出一组规则,以指向网页的文章标题和正文部分。现在我正试图向前迈出一步,让程序自动检测文章的标题和正文。我的第一种方法是根据一些通用标准为每个元素添加权重。例如:

//@x-weight = 1.0

//h1/@x-weight * 2.0

//h2/@x-weight * 1.8

还有很多规则,但你明白了。在根据标记分配权重后,我会考虑其他一些方面,例如与/head/title 的相似性和关键字的数量。这种方法虽然为大多数网页产生了不错的结果(感谢 SEO 专家:P),但对于其他一些网页来说却是灾难性的失败。我正在考虑使用artificial neural network 的可能性,但我找不到足够的证据证明我会得到明显更好的结果。另一种选择是将 CSS 引入游戏并根据字体大小调整权重。

问题:

  1. 我应该选择哪条路?
  2. 我错过了什么吗?
  3. 有更好的方法吗?

PS:我知道这样的问题没有完美的解决方案。

【问题讨论】:

    标签: c# html web-crawler neural-network


    【解决方案1】:

    我的建议是查看 CSS,而不是 h1、h2、h3,因为大多数网站并没有真正使用它们。大字体可能意味着标题,比给定的标签和关键字更清楚。

    带有大段文字的小字体很可能是正文。

    我认为没有真正的好方法可以做到这一点,除非你表现得像是在使用网络浏览器查看页面,而不是仅仅查看源代码(因为这就是人们阅读的方式。然而,使用网页的图片,然后使用图像处理提取内容的可行性是完全不现实的。

    希望对你有帮助。

    【讨论】:

    • 我正在考虑下载和解析 css 文件并根据font-size 应用一些权重,但这很容易导致我捕获站点名称而不是文章标题。感谢您的建议。
    • 我正在考虑这个问题,您可以通过将捕获的标题与同一域/子域的不同页面上的标题进行比较来解决该问题。这样您就可以识别它是否是网站的标题。
    【解决方案2】:

    很难提出适用于多个网站的权重/规则 - 就一致性或标准 css 的使用而言,有些网站非常糟糕。最后我认为最好的可能是组合:

    1. 使用字体大小
    2. 使用常用的 html 标签 标题,即 h1、h2 等。
    3. 查找标题元属性。
    4. 查找 css 类属性 常用于文章/标题 (i. *文章)
    5. 查找文本在其中的位置 页面(即通常标题在 页面的前 1/3)

    使用这些标准的加权组合生成分数。作为配置部分,每个站点的权重可能因站点而异。

    【讨论】:

    • 没有。 5确实是个好主意。尽管没有人建议使用 ANN 或其他方法,但我觉得有点奇怪……我确信有人会站出来告诉我我的方法完全错误,并且有更好和/或更简单的方法来做到这一点。感谢您的建议:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多