div.childrenを持つイテレータを返します。 '\n'
は.children
にいるような
for div in nsoup.find_all(class_='cities'):
for childdiv in div.find_all('div'):
print (childdiv.string) #london, york
はAttributeErrorがあるため非タグで、育ちました。適切な子セレクタを使って特定のdivを見つけてください。
が(もっと編集)あなたの例外を再現することはできません - ここに私がやったものだ:
In [137]: print foo.prettify()
<div class="cities">
<div id="3232">
London
</div>
<div id="131">
York
</div>
</div>
In [138]: for div in foo.find_all(class_ = 'cities'):
.....: for childdiv in div.find_all('div'):
.....: print childdiv.string
.....:
London
York
In [139]: for div in foo.find_all(class_ = 'cities'):
.....: for childdiv in div.find_all('div'):
.....: print childdiv.string, childdiv['id']
.....:
London 3232
York 131
'children'は' contents'を持つ各一つは、子どものシーケンスです。シーケンス自体には 'contents'はありません。 '[1、2、3]'は整数ではないのと同じです。一方、どんなシーケンスと同様に、最初の値を取得するには、 'next(iter(div.children))'だけができます。 – abarnert