如何在特定单词后查找列表

时间:2014-07-27 20:02:08

标签: python beautifulsoup

我试图在根据该单词对我想要分类的单词之后找到所有列表。

所以我的样本数据如下:

<p>
    <a href="#">WordA</a>
</p>
<ul>
    <li>Something</li>
    <li>Something</li>
<ul>
<p>
    <a href="#">WordB</a>
</p>
<ul>
    <li>Something</li>
    <li>Something</li>
<ul>

将上面的示例考虑在内,我希望获取WordA,并将其分类到下面的列表,WordB也是如此。

是否有可能搜索WordA并在其下方找到<ul>标记?

1 个答案:

答案 0 :(得分:2)

对段落中的所有链接进行迭代,因为每个链接都会获得父级的下一个同级ul标记并获取所有li个标记(find_next_sibling()有助于获取下一个ul段落后的元素):

from bs4 import BeautifulSoup

html = """
<div>
    <p>
        <a href="#">WordA</a>
    </p>
    <ul>
        <li>Something</li>
        <li>Something</li>
    </ul>
    <p>
        <a href="#">WordB</a>
    </p>
    <ul>
        <li>Something</li>
        <li>Something</li>
    </ul>
</div>
"""
soup = BeautifulSoup(html)
for a in soup.select('p > a'):
    print a.text

    for li in a.parent.find_next_sibling('ul').find_all('li'):
        print li.text
    print "-----"

打印:

WordA
Something
Something
-----
WordB
Something
Something
-----