用lxml拉出特定的字符串?

时间:2016-10-13 14:17:33

标签: python python-3.x lxml

我有html:

<div title="" data-toggle="tooltip" data-template="
<div class=&quot;tooltip infowin-tooltip&quot; role=&quot;tooltip&quot;>
<div class=&quot;tooltip-arrow&quot;>
<div class=&quot;tooltip-arrow-inner&quot;>
</div>
</div>
<div class=&quot;tooltip-inner&quot; style=&quot;text-align: left&quot;>
</div>
</div>"
 data-html="true" data-placement="top" data-container=".snippet-container" class="font-160 line-110 text-default text-light" data-original-title="HOUSTON [US]">
<ahref="/en/ais/details/ports/919" class="no-underline group-ib color-inherit">USHOU</a>
</div>

我想使用lxml从中拉出“HOUSTON [US]”。使用BeautifulSoup我可以

soup.find("div", class_='font-160 line-110')["title"]

lxml中有类似内容吗?我试过了

parsed_body.xpath('.//div[@class="font-160 line-110 text-default text-light")["title"]')[0].text 

但这会返回空白。

2 个答案:

答案 0 :(得分:1)

您可以使用XPath:

//div[@class="font-160 line-110 text-default text-light"]/@data-original-title

在XPath中,方括号表示谓词。谓词过滤器返回节点,而不会影响返回的。即所以你的例子会返回div元素本身。

要获取属性的值,您需要使用路径分隔符(/),后跟@符号和属性名称。

答案 1 :(得分:0)

我最终使用//div/@title[0]来提取所需的文字。