获取lxml格式的项目列表



所以我有一个像这样的html:

...
<ul class="myclass">
    <li>blah</li>
    <li>blah2</li>
</ul>
...

我想从类名为"myclass"的ul中获取文本"blah"one_answers"blah2"

所以我尝试使用innerhtml(),但由于某种原因,它不能与lxml。

我使用Python 3

我会试试:

doc.xpath('.//ul[@class = "myclass"]/li/text()')
# out: ["blah","blah2"]

编辑:

what if there was a <a> in the <li>? for example, how would I get "link" and text" from <li><a href="link">text</a></li>?

link = doc.xpath('.//ul[@class = "myclass"]/li/a/@href')
txt= doc.xpath('.//ul[@class = "myclass"]/li/a/text()') 

如果你愿意,你可以把它们结合起来,如果我们以@larsmans为例,你可以使用'//'来获得整个文本,因为我相信lxml不支持表达式中的string()方法。

doc.xpath('.//ul[@class="myclass"]/li[a]//text() | .//ul[@class="myclass"]/li/a/@href')
# out: ['I contain a ', 'http://example.com', 'link', '.']

还可以使用text_content()方法:

html=
"""
<html>
<ul class="myclass">
    <li>I contain a <a href="http://example.com">link</a>.</li>
    <li>blah</li>
    <li>blah2</li>
</ul>
</html>
"""
import lxml.html as lh
doc=lh.fromstring(html)
for elem in doc.xpath('.//ul[@class="myclass"]/li'):
    print elem.text_content()

打印:

#I contain a link.
#blah
#blah2

最新更新