2

Python で BeautifulSoup モジュールを使用して、Web ページのリストを読みたいと考えています。HTML コードは次のとおりです。

...
<ul id="sidebarmenu1">
<li><a href="Business">Business</a></li>
<li><a href="Warfare">Chinese</a></li>
</ul>
...

BeautifulSoup を使用してドキュメントを解析します。ここで、リストの要素をループしたいと思います。したがって、次のように next_siblings 属性を使用します。

first_element = soup.ul.li
for items in soup.ul.li.next_siblings :
    <statements>

ただし、これにより次のエラーが発生します。

TypeError: 'NoneType' object is not iterable

次のliタグの読み方を誰か教えてください。明らかに、同じレベルに別の li タグがあるため、next_siblings リストにある必要があります。

同じレベルですべての li タグにアクセスする方法はありませんか。findAll は、特定の構造内にネストされたすべてのタグを提供します。

4

3 に答える 3

1

@elssar の回答を借りて、次のコードを使用しました。

main_list= soup.find('ul', attrs= {'id': 'sidebarmenu1'}
for li in main_list.findAll('li',attrs={},recursive=False):
    ul = li.find('ul')
    if ul == None :
        #do something
    else:
        navigate(ul)

ここで、navigate(item) は再帰関数です:

def navigate(item):
    for con in item.findAll('li',attrs={},recursive=False):
            ul = con.find('ul')
            if (ul == None):
                #do something
            else:
                navigate(ul)
于 2013-03-21T12:09:17.573 に答える
0

あなたはこのようなことをします -

main_list= soup.find('ul', attrs= {'id': 'sidebarmenu1'}
elements= main_list.findAll('li')
for link in elements:
    #do something
于 2013-03-21T03:12:39.540 に答える
0

このソリューションを参照してください。ネストされた要素には findAll() を使用します。

それが完全にあなたが望むものかどうかはわかりませんが、それが始まりかもしれません.

于 2013-03-21T03:06:06.107 に答える