-1

我正在尝试使用 XPaths 从网页中提取数据,然后将其插入到电子表格中。更详细的总结在问题的最后。

该网页包含“主要单元格”。每个这样的主细胞都有 0 到 2 个(包括)子细胞。我想提取这些子单元格并将它们插入到电子表格中,并在缺少子单元格的地方生成空条目。

例子:

Maincell 1
    abc
    det

Maincell 2

    ghi

Maincell 3
    jkl

Maincell 4
    mno
    pqr

这应该导致两列

第一列

abc

jkl
mno

第二栏

def
ghi

pqr

如果我将其粘贴到电子表格中,结果应该是

abc def
    ghi
jkl
mno pqr

在一种情况下,我为第一列提供的 XPath 是

//div[@data-role='infoBox']/span[contains(@class, 'special-info')]/span/span/span/text()

和第二列

//div[@data-role='infoBox']/span[contains(@class, 'normal-info')]/span/span/span/text()

(它们非常不精确且容易出错,但它们只会被使用一次)

我在浏览器控制台中手动执行此操作,并且仅针对某个网页/站点执行一次,但我将定期对新站点/网页执行此操作(也就是说,我必须更改 XPath 但过程 - 这是我的问题的核心 - 会是一样的)。

问题是,当单元格丢失时,结果列表不包含空条目,这意味着当我将其粘贴到电子表格的第 2 行和第 3 行时,我的示例将不正确:

abc def
ghi jkl  <--- These two don't belong to the same row
mno pqr

有关我的用例的更多详细信息:

  • 通常我的结果中会有成百上千行。
  • 正如我上面提到的,我将在浏览器控制台中手动执行此操作(我认为?有更好的选择吗?)。
  • 我会将结果从控制台复制粘贴到文本编辑器进行一些小的清理,然后将其传输到电子表格以进行进一步操作

问题是:当子单元格丢失时,如何在结果中实现空条目,以便在插入电子表格时行匹配?

额外的问题:当我在 Firefox 中执行 $x(".//header") 并将结果复制到文本编辑器中时,它看起来像这样:

51: #text "749"
​
52: #text "495"

我只对 749 和 495 感兴趣,并且更喜欢看起来像这样的输出

749
405

有什么方法可以实现吗?

总结一下:我经常发现网页的结构可以被描述为基于单元格的,其中每个单元格至少包含两个子单元格。我想将这些子单元格提取到电子表格中。通常这些子单元之一从主单元中丢失。这可以防止我先粘贴第一列,然后粘贴第二列,使其行与相应的子单元格匹配。

我想设置一个进程,让我只需找出子单元格的 XPath,然后在浏览器控制台(或其他适合手动执行此操作的工具)中执行它,最后只需将结果复制粘贴到电子表格。

4

0 回答 0