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

时间:2014-03-03 04:25:09

标签: python 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 个答案:

答案 0 :(得分: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>]