使用beautifulsoup寻找下一个兄弟节点,直到某个特定节点为止

2024-05-15 01:46:04 发布

您现在位置:Python中文网/ 问答频道 /正文

网页是这样的:

<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之后,找到下一个h2之前的下一个siblings

如果网页是这样的:(通常是这样的)

<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')

但是如果我想得到同样的结果,我应该怎么处理第一个网页呢?


Tags: 代码indiv网页forarticle文章section
1条回答
网友
1楼 · 发布于 2024-05-15 01:46:04

我想你可以这样做:

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
*****

相关问题 更多 >

    热门问题