【问题标题】:How to get list of childrens of children using xpath?如何使用 xpath 获取孩子的孩子列表?
【发布时间】:2019-11-08 09:33:34
【问题描述】:

table 元素中包含 tr 元素。而每个 tr 元素中都有 td 元素。

<table>
<tr>
<td> some data </td>
<td> other data </td>
</tr>
</table>

我想成对地从 td 元素中获取文本。但我愿意用 xpath 来做。

所以,我通过应用 xpath 将 lxml 树中的 tr 元素放在一个变量中。然后应用 xpath 从该变量中获取 td 元素。但是我从表中获取了所有 td 元素,我只想限制该变量中的 td 元素!

table = parsed.xpath("//table")
trElementFirst = table.xpath("/tr")[0]
tdElementsFromFirstTr = trElementFirst.xpath("/td")

我只想获取第一个 tr 元素的 td 元素列表。但是我从表中得到了所有 td 元素的列表。

【问题讨论】:

    标签: python xpath web-scraping lxml


    【解决方案1】:

    tdElementsFromFirstTr = trElementFirst.xpath("//td") 抓取所有td

    import lxml.html as html
    
    
    htmlStr = '''<table>
    <tr>
    <td> some data </td>
    <td> other data </td>
    </tr>
    
    <tr>
    <td> NO </td>
    <td> OTHER NO </td>
    </tr>
    
    </table>'''
    
    parsed = html.fromstring(htmlStr)
    
    table = parsed.xpath("//table")
    trElementFirst = table[0].xpath("tr")[0]  
    tdElementsFromFirstTr = trElementFirst.xpath("td")
    
    for each in tdElementsFromFirstTr:
        print (each.text)
    

    输出:

    some data 
    other data 
    

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 2018-08-10
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 2018-04-28
      相关资源
      最近更新 更多