我想用python xpath从以下html中提取html的一部分。 我的问题只是想提取html部分包含标签和文本,而这个Get all text inside a tag in lxml问题是提取html的文本部分,所以这两个问题是不同的。
<html>
<body>
<div class ="item">
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a> </li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
<div class = "movie">
<div title = "name">
<ul>[url=http://]
<li class="item-0"><a href="link1.html">movie a</a></li>
<li class="item-1"><a href="link2.html">movie b</a></li>
<li class="item-inactive"><a href="link3.html">movie c</a></li>
<li class="item-1"><a href="link4.html">movie d</a></li>
</ul>
</div>
</div>
</body>
</html>
实际上,我只想从上面的html中提取以下html。
<div title = "name">
<ul>
<li class="item-0"><a href="link1.html">movie a</a></li>
<li class="item-1"><a href="link2.html">movie b</a></li>
<li class="item-inactive"><a href="link3.html">movie c</a></li>
<li class="item-1"><a href="link4.html">movie d</a></li>
</ul>
</div>
我的代码导入了请求
page = requests.get('........html')
tree = html.fromstring(page.content)
body = tree.xpath('//div[contains(@title, "name")]')
print('body:', body)
但结果是
<Element div at 0x103620e58>
我想获得此部分html中的所有元素,例如
<ul> <li> .
请使用xpath方法而不是其他方法。
答案 0 :(得分:1)
我希望获得此部分html中的所有元素,例如 &LT; UL&GT; &LT;李&GT;
尝试使用:
body = tree.xpath('//div[contains(@title, "name")]/ul')
或:
更新:(感谢@RafaelAlmeida)所有元素吹掉div
body = tree.xpath('//div[contains(@title, "name")]//*')