如何使用选择器获取父标签?

时间:2017-10-30 14:13:19

标签: python python-3.x web-scraping css-selectors

在css选择器中是否有任何方法可以解析parent标记名称,在这种情况下tr

以下是搜索的元素:

html_content="""
<tr>
    <td>Hi!!!!</td>
</tr>
"""

如果我考虑上面的元素,那么解析父名tr的css选择器应该是什么?

from lxml.html import fromstring
root = fromstring(html_content)
item = root.cssselect("td")[0].text
print(item)

2 个答案:

答案 0 :(得分:1)

AFAIK有一种类似

的语法
*:has(>td)

lxml.html尚未支持

您可以使用内置getparent()方法

解决问题
item = root.cssselect("td")[0]
print(item.getparent().tag)

答案 1 :(得分:0)

使用lxml.html.HtmlElement.xpath()方法:

import lxml.html

html_content="""
<tr>
    <td>Hi!!!!</td>
</tr>
"""

root = lxml.html.fromstring(html_content)
item = root.xpath("td/..")[0]

print(item.tag)  # tr
  • td/.. - xpath表达式,..表示父节点