2016-06-07 5 views
0

Я хочу извлечь часть html из следующего html с python xpath. Мой вопрос просто хочу извлечь часть html include и тег, и этот вопрос Get all text inside a tag in lxml заключается в извлечении текстовой части html, поэтому эти два вопроса разные.python3 для извлечения html-части из html с помощью xpath

<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

Возможный дубликат [Получить весь текст внутри тега в LXML] (http://stackoverflow.com/questions/4624062/get-all-text-inside-a-tag-in-lxml) –

ответ

1

Я хочу, чтобы все элементы в этой части HTML, например < уль> < литий>

Попробуйте использовать:

body = tree.xpath('//div[contains(@title, "name")]/ul') 

или:

Обновление: (Спасибо @RafaelAlmeida) за все элементы дуют div

body = tree.xpath('//div[contains(@title, "name")]//*') 
+0

Это не то, о чем попросил ОП! –

+0

@ RafaelAlmeida: Возможно, вы правы из-за «get ** all ** the elements» –

+0

Спасибо @ hr_117 и @Rafael Almeida, Этот код, который я хочу: body = tree.xpath ('// div [содержит (@title, «name»)] // * ') ты хороший парень и будешь серьёзно относиться к тебе. С наилучшими пожеланиями! Кроме того, если у вас есть ссылка на материалы или учебники о xpath, скажите, пожалуйста! Во всяком случае, большое спасибо! – tktktk0711

Смежные вопросы