Получать данные во внутреннем интерфейсе, используя XPath - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу получить текст внутри div и внутренние атрибуты, такие как ul и li

Моя иерархия html выглядит следующим образом

<div>
  text
  <ul>
     <li>text</li>
     <li>text</li>
     <li>text</li>
  </ul>
</div>

Так что я могу получитьdiv текст с использованием функции xpath('div/text()'), но я застрял в получении другого текста внутри внутренних атрибутов.Может кто-нибудь помочь мне, как это сделать правильно.

1 Ответ

0 голосов
/ 22 февраля 2019

Использование BeautifulSoup:

from bs4 import BeautifulSoup
import urllib

test = '''<div>text_0<ul>
     <li>text_1</li>
     <li>text_2</li>
     <li>text_3</li>
  </ul>
</div>'''

soup = BeautifulSoup(test, 'html.parser')
data = soup.find_all("div")
for d in data:
    print(d.text)

ВЫХОД :

text_0
text_1
text_2
text_3

Использование xpath:

import lxml.html as LH

content = '''<div>text_0<ul>
     <li>text_1</li>
     <li>text_2</li>
     <li>text_3</li>
  </ul>
</div>'''
root = LH.fromstring(content)
for elem in root.xpath('//div/descendant::text()'):
    print(elem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...