13

ウェブページは次のようなものです。

<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まで。

Web ページが次のようなものである場合: (これは通常の場合です)

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

しかし、同じ結果を得るには、最初の Web ページをどうすればよいでしょうか?

4

2 に答える 2

11

次のようなことができると思います:

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
*****
于 2012-07-25T11:35:17.237 に答える