我如何继续获取包含一段文本的节点的父节点?
此外,我可以使用一些正则表达式机制作为匹配元素进行搜索/过滤,re.compile("th[ei]s? .ne")例如从下面进行搜索?
说 this one
html = '''<html>
<head><title></title></head>
<body>
<table>
<tr><td>1a</td><td>2a</td><td>3a</td><td>4a</td><td>5a</td><td>6a</td></tr>
<tr><td>1b</td><td>2b</td><td>3b</td><td>4b</td><td>5b</td><td>6b</td></tr>
<tr><td>1c</td><td>2c</td><td>3c</td><td>4c</td><td>5c</td><td>6c this one</td></tr>
</table>
<div><div>
<table>
<tr><td>1A</td><td>2A</td><td>3A</td><td>4A</td><td>5A</td><td>6A</td></tr>
<tr><td>1B</td><td>2B</td><td>3B</td><td>4B</td><td>5B</td><td>6B</td></tr>
<tr><td>1C</td><td>2C</td><td>3C</td><td>4C</td><td>5C</td><td>6C</td></tr>
</table>this one
</div></div>
</body>
</html>'''
我想有一个返回的迭代器:
<td>6c this one</td>
进而:
<div>
<table>
<tr><td>1A</td><td>2A</td><td>3A</td><td>4A</td><td>5A</td><td>6A</td></tr>
<tr><td>1B</td><td>2B</td><td>3B</td><td>4B</td><td>5B</td><td>6B</td></tr>
<tr><td>1C</td><td>2C</td><td>3C</td><td>4C</td><td>5C</td><td>6C</td></tr>
</table>this one
</div>
我试过:
import lxml.html
root = lxml.html.document_fromstring(html)
root.xpath("//text()[contains(., one)]")
和
import xml.etree.ElementTree as ET
for e in ET.fromstring(html).getiterator():
if e.text and e.text.find('one') != -1:
print "Found string %r, element = %r" % (e.text, e)
但是我可以拥有的最好的节点是包含this one自身的节点...而我正在寻找包含此文本的父节点。请注意,div或表仅作为示例,我真的需要在找到“ this”之后返回到父级,而不是过滤包含的xml元素,this one因为在找到它之前,我将不知道这是div,表还是其他任何东西包含。
杨__羊羊
繁星淼淼
相关分类