div.children без атрибута 'Содержимое' возвращает итератор.
for div in nsoup.find_all(class_='cities'):
for childdiv in div.find_all('div'):
print (childdiv.string) #london, york
AttributeError был поднят из-за не-теги, как '\n'
в .children
. просто используйте правильный дочерний селектор, чтобы найти конкретный 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'. Сама последовательность не имеет 'содержимого'. Это как '[1, 2, 3]' не является целым числом. Между тем, как и любая последовательность, чтобы получить первое значение, вы можете просто «next (iter (div.children))». – abarnert