Соскоб с помощью lxml - PullRequest
0 голосов
/ 01 июля 2019

Как извлечь текст между тегами с помощью xpath?Например, я попытался извлечь текст, который начинается с «Area:», следующий код извлек только слово «Area», а не следующий текст.

tree = lxml.html.fromstring(response.text)

xpath_ex= '//b[contains(text(),"Area:")]/descendant::text()'

raw_ex = tree.xpath(xpath_ex)

1 Ответ

0 голосов
/ 01 июля 2019

HTML-код, размещенный в вашем комментарии, является неполным, но при условии, что он выглядит примерно так:

 resp = """
    <div class="text"><h4>ABC, Assistant Professor&nbsp;</h4> 
      <p><b>Area:</b>&nbsp;Natural Language Processing, Artificial Intelligence, 
Computer Graphics, Computer Vision<a href=" somelink/people/Faculty/Profile/ABC.html"></a> </p> <p>  <a href="/computing/people/faculty/ABC.html">Profile &amp; Contact Information&nbsp;</a>  &nbsp;| &nbsp;Home Page</p> 
    </div>
"""

попробуйте это:

from lxml.html import fromstring
tree = fromstring(resp)

xpath_ex= tree.xpath('//div[@class="text"]/p')
print(xpath_ex[0].text_content())

Выход:

Область: обработка естественного языка, искусственный интеллект, компьютерная графика, компьютерное зрение

...