gpt4 book ai didi

powershell - HtmlAgilityPack根据单元格值获取表

转载 作者:行者123 更新时间:2023-12-03 17:36:10 24 4
gpt4 key购买 nike

我有1000多个HTML文档,每个文档包含多个表,并使用PowerShell对其进行处理。

我正在寻找提取特定的表,这些表可以通过第一行进行标识,该行用于标题,并且其中一个单元格始终带有“ measurement”一词。

由于HTML是.doc导出,因此该单词可以嵌套在<span><p>中,因此理想情况下,我可以忽略该嵌套级别。

我已经尝试过类似的方法:

$tables = $doc.DocumentNode.SelectNodes("//table[* = 'measurement']")


但什么也得不到。

这里还有更多HTML,不幸的是我无法全部发布,但这是MS Word导出为HTML文档:

<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;mso-table-layout-alt:fixed;border:none;
mso-border-alt:double windowtext 1.5pt;mso-padding-alt:0in 5.4pt 0in 5.4pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td width=192 valign=top style='width:2.0in;border:solid windowtext 1.0pt;
padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoHeading9><span lang=EN-CA>Areas</span></p>
</td>
<td width=288 valign=top style='width:3.0in;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoHeading9><span lang=EN-CA>measurements</span></p>
</td>
<td width=346 valign=top style='width:3.6in;border:solid windowtext 1.0pt;
border-left:none;mso-border-left-alt:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>
<p class=MsoHeading9><span lang=EN-CA>Objectives</span></p>
</td>
</tr>

最佳答案

没有进一步的信息或示例HTML标记,我只能建议使用后代轴//来获取所有后代节点,无论它们嵌套在<table>节点内有多深:

//table[.//* = 'measurement']


更新:

看完示例HTML之后,我认为使用更具体的xpath可能会有更有效的方法,例如:

//table[tr/td//* = 'measurement']


但是特定的xpath也会带来更多风险,使您不得不保留一些本应被选择的表。根据整个文档结构以及所需的效率来决定。

关于powershell - HtmlAgilityPack根据单元格值获取表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872449/

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