xpath查找包含1 tr和1 th的行

用户名

我需要编写xpath来查找仅包含1th和1 td的表中的行的帮助

范例html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <table>
        <tr>
            <th>test</th>
            <td>abc</td>
        </tr>
        <tr>
            <th>test1</th>
            <td>abc</td>
            <td>abc</td>
        </tr>
            <th>test2</th>
            <td>abc</td>
    </table>
</body>
</html>

对于此html,我希望仅第一行和最后一行,如果该行包含th和td以外的任何内容,则应跳过该行

'//table/tr[th and td]'我到达了这个xpath,但是td如果行包含其他<a或任何内容,这将包括重复不过滤

杰克·弗莱汀

这是可行的-不是很优雅,但是可以。我扩展了示例HTML,以引入更多有问题的节点:

test = """
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <table>
        <tr>
            <th>test</th>
            <td>abc</td>
        </tr>
        <tr>
            <th>test1</th>
            <td>abc</td>
            <td>abc</td>
        </tr>
        <tr>
            <th>test2</th>
            <td>abc</td>
        </tr>
        <tr>
            <a>test3</a>
            <td>abcd</td>
        </tr>
        <tr>
            <td>test4</td>
            <td>abcd</td>
        </tr>
    </table>
</body>    """

import lxml.html
doc = lxml.html.fromstring(test)
good_tags = ['th','td']
targs = doc.xpath('//tr')
for targ in targs:
    tr = targ.xpath('.//*')
    if len(tr)==2 and (tr[0].tag != tr[1].tag) and tr[0].tag in good_tags and tr[1].tag in good_tags:            
        print(lxml.html.tostring(targ).decode())

输出:

<tr>
            <th>test</th>
            <td>abc</td>
        </tr>

<tr>
            <th>test2</th>
            <td>abc</td>
        </tr>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用在<tr>标记下包含<th>和<td>标记的行来解析HTML表?

来自分类Dev

查找行+ 1行

来自分类Dev

在git中查找SHA1以获得包含给定行和给定字符串的文件版本

来自分类Dev

perl查找包含字符串1的行,然后提取字符串2和3之间的字符

来自分类Dev

在R中查找包含不超过2倍的值“ 1”的矩阵行?

来自分类Dev

在单个表行<tr>中混合使用表头<th>和表数据<td>单元

来自分类Dev

查找NA介于0和1之间的行

来自分类Dev

std :: [tr1 ::] ref和boost :: ref之间的混淆

来自分类Dev

xpath:查找具有属性和包含的元素?

来自分类Dev

sed-使用file1查找file2中包含的替换文件3中的行

来自分类Dev

根据TH和TR选择输入字段

来自分类Dev

通过使用Excel VBA或公式查找2行和1列来查找值

来自分类Dev

通过使用Excel VBA或公式查找2行和1列来查找值

来自分类Dev

R:在0和1的矩阵中查找包含最多1的列集

来自分类Dev

使用find(1)和grep(1)查找包含特定字符串的文件

来自分类Dev

如何在导出html表数据中包含<th>行?

来自分类Dev

将类添加到包含 Dog 1 和其间行的表行

来自分类Dev

如何查找和替换跳过包含特定字符的行?

来自分类Dev

如何查找和替换,跳过包含特定字符的行?

来自分类Dev

从行号获取1行和1行向下

来自分类Dev

如何在1行中查找和删除重复的单元格?

来自分类Dev

在第 1 行谷歌表格功能上查找和替换

来自分类Dev

计算包含二进制数字“ 0”和“ 1”的行中的比率值

来自分类Dev

vim regex搜索包含string1和string2的行

来自分类Dev

计算包含二进制数字“ 0”和“ 1”的行中的比率值

来自分类Dev

如何使用不同的列标签(1 = td 和 2 = td 内的 a)刮取 tr?

来自分类Dev

使用TR1进行基本字典查找的C ++

来自分类Dev

<tr>中的<th>和<td>是合法的HTML代码吗?

来自分类Dev

R:tr()、th() 和 thead() - 它们属于哪个包?

Related 相关文章

  1. 1

    如何使用在<tr>标记下包含<th>和<td>标记的行来解析HTML表?

  2. 2

    查找行+ 1行

  3. 3

    在git中查找SHA1以获得包含给定行和给定字符串的文件版本

  4. 4

    perl查找包含字符串1的行,然后提取字符串2和3之间的字符

  5. 5

    在R中查找包含不超过2倍的值“ 1”的矩阵行?

  6. 6

    在单个表行<tr>中混合使用表头<th>和表数据<td>单元

  7. 7

    查找NA介于0和1之间的行

  8. 8

    std :: [tr1 ::] ref和boost :: ref之间的混淆

  9. 9

    xpath:查找具有属性和包含的元素?

  10. 10

    sed-使用file1查找file2中包含的替换文件3中的行

  11. 11

    根据TH和TR选择输入字段

  12. 12

    通过使用Excel VBA或公式查找2行和1列来查找值

  13. 13

    通过使用Excel VBA或公式查找2行和1列来查找值

  14. 14

    R:在0和1的矩阵中查找包含最多1的列集

  15. 15

    使用find(1)和grep(1)查找包含特定字符串的文件

  16. 16

    如何在导出html表数据中包含<th>行?

  17. 17

    将类添加到包含 Dog 1 和其间行的表行

  18. 18

    如何查找和替换跳过包含特定字符的行?

  19. 19

    如何查找和替换,跳过包含特定字符的行?

  20. 20

    从行号获取1行和1行向下

  21. 21

    如何在1行中查找和删除重复的单元格?

  22. 22

    在第 1 行谷歌表格功能上查找和替换

  23. 23

    计算包含二进制数字“ 0”和“ 1”的行中的比率值

  24. 24

    vim regex搜索包含string1和string2的行

  25. 25

    计算包含二进制数字“ 0”和“ 1”的行中的比率值

  26. 26

    如何使用不同的列标签(1 = td 和 2 = td 内的 a)刮取 tr?

  27. 27

    使用TR1进行基本字典查找的C ++

  28. 28

    <tr>中的<th>和<td>是合法的HTML代码吗?

  29. 29

    R:tr()、th() 和 thead() - 它们属于哪个包?

热门标签

归档