Я хочу найти тег span между тегом LI и его атрибутами. Пытаюсь с красивым мылом, но не повезло. Детали моего кода. Есть ли хоть одна точка, которую я правильно назвал методологией
В этом коде моя функция getId должна вернуть мне id = "0_False-2"
Кто-нибудь знает правильный метод?
from BeautifulSoup import BeautifulSoup as bs
import re
html = '<ul>\
<li class="line"> </li>\
<li class="folder-open-last" id="0">\
<img style="float: left;" class="trigger" src="/media/images/spacer.gif" border="0">\
<span class="text" id="0_False">NOC</span><ul style="display: block;"><li class="line"> </li><li class="doc" id="1"><span class="active text" id="0_False-1">PNQAIPMS1</span></li><li class="line"> </li><li class="doc-last" id="2"><span class="text" id="0_False-2">PNQAIPMS2</span></li><li class="line-last"></li></ul></li><li class="line-last"></li>\
</ul>'
def getId(html, txt):
soup = bs(html)
soup.findAll('ul',recursive=False)
head = soup.contents[0]
temp = head
elements = {}
while True:
# It temp is None that means no HTML tags are available
if temp == None:
break
#print temp
if re.search('li', str( temp)) != None:
attr = str(temp.attrs).encode('ascii','ignore')
attr = attr.replace(' ', '')
attr = attr.replace('[', '')
attr = attr.replace(']', '')
attr = attr.replace(')', '')
attr = attr.replace('(', '')
attr = attr.replace('u\'', '')
attr = attr.replace('\'', '')
attr = attr.split(',')
span = str(temp.text)
if span == txt:
return attr[3]
temp = temp.next
else:
temp = temp.next
id = getId(html,"PNQAIPMS2")
print "ID = " + id