保留BeautifulSoup选择顺序

时间:2018-01-14 03:20:43

标签: python beautifulsoup

如果我有一个简单的文件:

<p> hi </p>
<q> hello </q>
<p> bye </p>
<q> try </q>
<p> why </p>

我将它存储在一个名为doc的BeautifulSoup对象中,调用:

> doc.select('p, q')
[<p> hi </p>, <p> bye </p>, <p> why </p>, <q> hello </q>, <q> try </q>]

是否可以按正确顺序获取这些元素?我想对这些标签进行编号,以便“hi”获得1,“hello”获得2,依此类推......这是一个最小的例子,但实际上我必须按类,id和标签名称进行选择。

2 个答案:

答案 0 :(得分:2)

如果内置方法不适合您的使用案例,您可以随时使用自己的自定义查找功能。

def my_tag(tag):
    if tag.name in ('p', 'q'):
        return True

soup.find_all(my_tag)

结果将是

 [<p> hi </p>, <q> hello </q>, <p> bye </p>, <q> try </q>, <p> why </p>]

答案 1 :(得分:0)

soup.findAll(['p','q'])

怎么样?
[<p> hi </p>, <q> hello </q>, <p> bye </p>, <q> try </q>, <p> why </p>]