我正在尝试使用 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,然后在浏览器控制台(或其他适合手动执行此操作的工具)中执行它,最后只需将结果复制粘贴到电子表格。