在lxml中查找特定标签或属性值的所有条目

0 投票
1 回答
1087 浏览
提问于 2025-04-17 20:34

我有一个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>]

撰写回答