2013-03-19 4 views
6

첫 아이를 어떻게 만듭니 까?첫 아이를 갖게하는 아름다운 스프

<div class="cities"> 
     <div id="3232"> London </div> 
     <div id="131"> York </div> 
    </div> 

런던을 어떻게 얻을 수 있습니까?

for div in nsoup.find_all(class_='cities'): 
    print (div.children.contents) 

은 AttributeError : '반복자'목적이없는 속성 '내용'

+1

'children'는'contents'이있는 각 하나가 아이들의 순서입니다. 시퀀스 자체에는 '내용'이 없습니다. '[1, 2, 3]'이 정수가 아닌 것과 같습니다. 한편, 어떤 순서와 마찬가지로 첫 번째 값을 얻으려면'next (iter (div.children)) '를 사용할 수 있습니다. – abarnert

답변

4

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 
+0

'AttributeError : 'NavigableString'객체에 'content'속성이 없으며 내용 대신 문자열을 사용하면'RuntimeError : Python 객체를 호출하는 동안 최대 재귀 깊이가 초과되었습니다. ' –

+1

@EmmetB 편집 – thkang

+0

이 표시됩니다. None then RuntimeError : Python 객체를 호출하는 동안 최대 재귀 깊이가 초과되었습니다. –

관련 문제