gpt4 book ai didi

dom - 是否有可靠的算法来生成健壮的 DOM 节点选择器,只给定目标节点?

转载 作者:行者123 更新时间:2023-12-03 16:54:07 24 4
gpt4 key购买 nike

在编写爬虫时,我们通常使用某种选择器来识别感兴趣的特定节点。理想情况下,即使页面随时间变化,选择器也应该继续工作。许多常见的方法,如通过 id 抓取节点,在频繁更新的页面上很脆弱,在某些节​​点上是不可能的。我正在尝试找到生成健壮选择器的好算法,但是由于似乎没有针对此问题的标准术语,因此很难找到所有内容。

这是我已经知道的选择器 DSL。

  • XPath 选择器 - 从 JS 到流行的无处不在
    Python 和 Ruby 抓取库。
  • CSS 选择器 - 可以在许多可以找到 xpath 的地方找到
    选择器。
  • 高级选择器 - 这里我将给出 Chickenfoot 的例子,
    允许用户写click("begin tutorial")找到一个链接
    带有文本“开始教程”。通常这些是在
    xpath 和 CSS 选择器。我很想了解更多的成员
    这个语系。
  • 视觉选择器 - 例如,这将是采用的方法,
    Sikuli,这使它看起来好像程序正在调用
    功能在相关节点的屏幕截图上。我一个都不知道
    这种方法的特定于网络的实例,但我想有
    一些。

  • 这是我已经知道的选择器生成算法。选择器生成算法是指将节点作为输入并产生稳健的选择器作为输出的算法。
  • iMacros:查找具有相同节点类型和文本的所有元素
    目标元素,在此列表列表中查找目标元素的索引。用途
    节点类型、文本和索引作为选择器。还包括身份证
    用于表单和表单元素。
  • CoScripter:如果可用,使用元素的文本。如果不是,使用前面的
    文本。
  • Selenium:在可用的情况下使用 id。使用各种其他属性
    否则,例如图像替代文本、链接的显示文本、按钮
    显示的文字。
  • Wargo System:使用元素文本。
  • 许多系统:许多系统使用从根到目标节点的 xpath,或者一些
    该xpath的后缀。

  • 所有这些选择器生成算法在某些节点上都失败了。有更好的方法吗?或者我可以与这些算法结合以产生更好的混合算法的其他方法?

    最佳答案

    当我开始为我正在做的一些工作调查这个主题时,我也对这个主题的可用信息如此之少感到惊讶。

    我确实找到了这篇 2003 年的论文,但不幸的是,我只能访问摘要:

    Abe, Mari, and Masahiro Hori. “Robust Pointing by XPath Language: Authoring Support and Empirical Evaluation.” In Proceedings of the 2003 Symposium on Applications and the Internet, 156 – . SAINT ’03. Washington, DC, USA: IEEE Computer Society, 2003.

    对于我自己的使用,我遵循了Tim Vasil's 50-line jquery plugin中的方法.我不会重现该链接上提供的代码,而是描述它:

    它从元素递归遍历 DOM 树,“向后”构建选择器。在每个级别:

  • 如果节点有一个 ID,只需使用它并跳过所有父节点;它们不会添加到选择器中。
  • 如果节点有一个标签名称或一组在其 sibling 中唯一的类,则将其用作选择器。否则,使用 :nth-child。

  • 由于我将在访问页面之间存储元素内容,因此我正在考虑在这里实现一些“错误检测”,可能使用与上次访问相比的百分比变化来检测选择器是否抓取了错误的元素。

    关于dom - 是否有可靠的算法来生成健壮的 DOM 节点选择器,只给定目标节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418332/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com