直到某一个使用beautifulsoup查找下一个兄弟姐妹(Find next siblings u

2019-06-26 12:15发布

该网页是这样的:

<h2>section1</h2>
<p>article</p>
<p>article</p>
<p>article</p>

<h2>section2</h2>
<p>article</p>
<p>article</p>
<p>article</p>

我怎样才能找到在其中的文章各部分? 也就是说,找到后H2,发现nextsiblings

直到下一个H2。

如果所述网页都像:(这通常是这种情况)

<div>
<h2>section1</h2>
<p>article</p>
<p>article</p>
<p>article</p>
</div>

<div>
<h2>section2</h2>
<p>article</p>
<p>article</p>
<p>article</p>
</div>

我可以编写代码:

for section in soup.findAll('div'):
...
    for post in section.findAll('p')

不过,我应该与第一网页做,如果我要得到相同的结果?

Answer 1:

我想你可以做这样的事情:

for section in soup.findAll('h2'):
    nextNode = section
    while True:
        nextNode = nextNode.nextSibling
        try:
            tag_name = nextNode.name
        except AttributeError:
            tag_name = ""
        if tag_name == "p":
            print nextNode.string
        else:
            print "*****"
            break

鉴于:

<h2>section1</h2>
<p>article1</p>
<p>article2</p>
<p>article3</p>

<h2>section2</h2>
<p>article4</p>
<p>article5</p>
<p>article6</p>

输出:

article1
article2
article3
*****
article4
article5
article6
*****


文章来源: Find next siblings until a certain one using beautifulsoup