python3用xpath从html中提取html部分

时间:2016-06-07 09:50:33

标签: html xpath python-3.5

我想用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方法而不是其他方法。

1 个答案:

答案 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")]//*')