在lxml中查找特定标签或属性值的所有条目
我有一个HTML的网址,我需要根据不同的标签和属性值来选择各种元素。我的作业要求使用lxml这个库。
我对BeautifulSoup
很熟悉。
在BeautifulSoup中,要实现这个功能,我们可以使用
k = soup.findAll('tagname')
这里的soup
是
<someRandomTag>...</someRandomTag>
<someTag>
<tagName>entry 1</tagName>
<tagName>entry 2</tagName>
<tagName>entry 3</tagName>
<tagName>entry 4</tagName>
</someTag>
在这里,所有标签为'tagname'的条目会作为一个列表返回给k。请问在lxml
中有没有类似的方法呢?
我知道Xpath
,比如tags=doc.xpath('descendant::*[@attrib1="atrtribval"]')
。
但我想知道还有没有其他的方法?
1 个回答
1
还有一个叫做 findall
的东西:
In [645]: t='''
...: <someTag>
...: <tagName>entry 1</tagName>
...: <tagName>entry 2</tagName>
...: <tagName>entry 3</tagName>
...: <tagName>entry 4</tagName>
...: </someTag>
...: '''
In [646]: etree.fromstring(t)
Out[646]: <Element someTag at 0x11ff3918>
In [647]: stag=etree.fromstring(t)
In [648]: stag.findall('tagName')
Out[648]:
[<Element tagName at 0x11ff38a0>,
<Element tagName at 0x11ff3f80>,
<Element tagName at 0x11ff3ad0>,
<Element tagName at 0x11ff3da0>]