I want the data which is there in the nested divs I'm unable to get it.
There are nested div I need the data to be properly formatted.
I have written the bs4 module but I got an Error
BeautifulSoup: AttributeError: 'NavigableString' object has no attribute 'name'
Kindly Help me!
My HTML
<div id="new">
<div id="newDat">
<div class="Data">
<div class="DataNew">
<div class="DataNew new">
<div class="Data Left">
<div class="name"><a class="name" href="">Jack Daniels</a></div>
<div class="details"><span class="loc">Barcelona</span></div>
<div class="header"><a class="looking"> Looking for meeting new people</a></div>
<div class="ideas"><a class="ideas">I have new ideas</a></div>
<div class="profile"> <em class="profilss"></em>MS in cs<br></div>
</div>
<div class="Data Right">
<a class="phone"><span class="txt">+123123123123123231</span></a>
</div>
</div>
</div>
</div>
<div class="DataOne">
<div class="DataNew">
<div class="DataNew new">
<div class="Data Left">
<div class="name"><a class="name" href="">Jack Daniels</a></div>
<div class="details"><span class="loc">Barcelona</span></div>
<div class="header"><a class="looking"> Looking for meeting new people</a></div>
<div class="ideas"><a class="ideas">I have new ideas</a></div>
<div class="profile"> <em class="profilss"></em>MS in cs<br></div>
</div>
<div class="Data Right">
<a class="phone"><span class="txt">+123123123123123231</span></a>
</div>
</div>
</div>
</div>
<div class="DataTwo">
<div class="DataNew">
<div class="DataNew new">
<div class="Data Left">
<div class="name"><a class="name" href="">Jack Daniels</a></div>
<div class="details"><span class="loc">Barcelona</span></div>
<div class="header"><a class="looking"> Looking for meeting new people</a></div>
<div class="ideas"><a class="ideas">I have new ideas</a></div>
<div class="profile"> <em class="profilss"></em>MS in cs<br></div>
</div>
<div class="Data Right">
<a class="phone"><span class="txt">+123123123123123231</span></a>
</div>
</div>
</div>
</div>
<div class="DataThree">
<div class="DataNew">
<div class="DataNew new">
<div class="Data Left">
<div class="name"><a class="name" href="">Jack Daniels</a></div>
<div class="details"><span class="loc">Barcelona</span></div>
<div class="header"><a class="looking"> Looking for meeting new people</a></div>
<div class="ideas"><a class="ideas">I have new ideas</a></div>
<div class="profile"> <em class="profilss"></em>MS in cs<br></div>
</div>
<div class="Data Right">
<a class="phone"><span class="txt">+123123123123123231</span></a>
</div>
</div>
</div>
</div>
</div>
</div>
My Beautiful Soup Code
li = page.find('div', {'id': 'new'})
for tag in li:
for i in tag.find_all("div", {"class": "name"}):
print i.getText()
break
for i in tag.find_all("div", {"class": "details"}):
print i.getText()
break
for i in tag.find_all("div", {"class": "header"}):
print i.getText()
break
for i in tag.find_all("div", {"class": "ideas"}):
print i.getText()
break
for i in tag.find_all("div", {"class": "profile"}):
print i.getText()
break
for i in tag.find_all("div", {"class": "phone"}):
print i.getText()
break
I want the output like this
Div one
Name : Jack Daniels
Details : Barcelona
header : Looking for meeting new people
ideas : I have new ideas
profile: MS in cs
tel : +123123123123123231
Div two
Name : Jack Daniels
Details : Barcelona
header : Looking for meeting new people
ideas : I have new ideas
profile: MS in cs
tel : +123123123123123231
And so on.
If I have 100 Divs inside the <div id = "new"> I need the output like this.