div.children không có thuộc tính 'nội dung' trả về một iterator.
for div in nsoup.find_all(class_='cities'):
for childdiv in div.find_all('div'):
print (childdiv.string) #london, york
AttributeError được nuôi nấng, vì không thẻ như '\n'
là trong .children
. chỉ cần sử dụng bộ chọn con thích hợp để tìm div cụ thể.
(thêm chỉnh sửa) không thể tái tạo ngoại lệ của bạn - đây là những gì tôi đã thực hiện:
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' là một chuỗi các con, mỗi một trong số đó có' contents'. Bản thân trình tự không có 'nội dung'. Nó giống như '[1, 2, 3]' không phải là một số nguyên. Trong khi đó, giống như bất kỳ chuỗi nào, để có được giá trị đầu tiên, bạn có thể chỉ 'next (iter (div.children))'. – abarnert