0

我有一个包含以下内容的 html 文件。

...
<table><tbody>
...
            <tr>
              <td><span class="myclass">C</span>
                <a href="/myurl" title="myclick">mytext</a>
                   tailing text
              </td>
            </tr>
...
</tbody></table>
...

我想提取信息并以以下格式写入 TSV 文件。

C<TAB>mytext<T>tailing text

到目前为止,我只能用这个 xpath 代码来提取前两列。谁能告诉我如何提取第三列?谢谢。

xidel -s -e '//table/tbody/tr/td/join((span, a), x:cps(9))' - < infile.html
4

2 回答 2

1

如果您使用//table/tbody/tr/td/string-join(node()[normalize-space()], x:cps(9))您会得到三列,但最后一列可能在文本之前和之后包含空格,因此可能//table/tbody/tr/td/string-join(node()[normalize-space()]/normalize-space(), x:cps(9))是确保您没有得到未在所需结果中显示的空格。

于 2020-09-30T22:24:57.283 回答
0

你可以使用这个命令:

xidel infile.html --xpath '//table/tbody/tr/td/string-join((span, "<TAB>", a, "<T>", a/following::text()[1]))'

或者

xidel --xpath '//table/tbody/tr/td/string-join((span, "<TAB>", a, "<T>", a/following::text()[1]))' - < infile.html

另一种方法是

xidel infile.html --xpath '//table/tbody/tr/td/concat(span, "<TAB>", a, "<T>", a/following-sibling::text()[1])' 

输出是 - 在所有三种情况下:

C<TAB>mytext<T>tailing text
于 2020-09-30T22:21:24.593 回答