【发布时间】:2012-03-12 06:35:20
【问题描述】:
在 HTML 方面,我有以下几点。我想提取表格单元格的各种内容,但是我发现单元格中偶尔会有一些嵌入的 div,也许还有其他我不确定的奇怪之处:
<p align="center">
<img src="some_image.gif" alt="Some Title">
</p>
<TABLE WIDTH=500 BORDER=1 class=textwhite ALIGN=center CELLPADDING=0 CELLSPACING=0>
<TR>
<TD colspan=4 ALIGN=center><b>Title</b></TD>
</TR>
<TR>
<TD ALIGN=center>Title</TD>
<TD ALIGN=center>date</TD>
<TD ALIGN=center>value</TD>
<TD ALIGN=center>value</TD>
</TR><TR>
<TD ALIGN=center>Title2</TD>
<TD ALIGN=center></TD>
<TD ALIGN=center><div class=redtext>----</div></TD>
<TD> </TD>
</TR><TR>
<TD ALIGN=center>Title3</TD>
<TD ALIGN=center><div class=yellowtext>value</div></TD>
<TD ALIGN=center><div class=redtext>value</div></TD>
<TD ALIGN=center>value<SUP>6</SUP></TD>
</TR><TR>
<TD ALIGN=center>Title4</TD>
<TD ALIGN=center><div class=bluetext>value</div></TD>
<TD ALIGN=center><div class=redtext>value</div></TD>
<TD> </TD>
</TR></TABLE>
<blockquote>
<p class="textstyle">
Text.
</p>
</blockquote>
我的第一个冲动是提取所有元素文本并以编程方式对其进行切片。我会注意 Title1、Title2 等,以了解一行何时开始,然后如果发现“----”表示没有价值,则跳过这一行并继续前进。但是,我意识到直接使用 xpath 可能有更好的方法来处理这个问题。
如何使用 xpath 解决这个问题,以便从本质上给出每个单元格的最终子文本内容,而不必走进每个 div(如果存在)?还是有更类似于 xpath 的方法来解决这个问题?
显然,我正在尝试提供最灵活的解决方案,即使出现其他意外元素,即使它们不太可能出现,也不会变得脆弱。
【问题讨论】:
-
为什么不告诉我们想要的输出呢?
-
所需的输出只是每个单元格的内容。最终,这将存储在一个哈希数组中,这样“Title1”、“Title2”等将是每个哈希的名称。然后,如果行中的每个单元格中都有一个值,它们将是该哈希中的附加值。
标签: php python html ruby xpath