В Python SGMLParser, я не могу разобрать «<br/>
» без пустого блока, но «<br />
».В Python SGMLParser, не может разобрать «<br/>» без пустого блока, но «<br />»
я могу запустить этот код для успешного разбора HTML, но если изменить тег «<br />
» до «<br/>
», как только удаления пустого блока, он приводит, что я не могу разобрать HTML успешно.
Есть идеи решить эту проблему, кроме как заменить тег?
успешный пример.
# coding=utf-8
from sgmllib import SGMLParser #get SGML
class ListName(SGMLParser):#parser class
def reset(self):
self.is_a = False #get <a></a>
self.name=[] #get text
SGMLParser.reset(self)
def start_a(self,attrs):
self.is_a = True
def end_a(self):
self.is_a = False
def handle_data(self,data):
if self.is_a:
self.name.append(data)
if __name__ == '__main__':
urls='''
<tr>
<td height="207" colspan="2" align="left" valign="top" class="normal">
<p>Damien Rice - 《0》 </p>
<a href="http://galeki.xy568.net/music/Delicate.mp3">1. Delicate</a><br />
<a href="http://galeki.xy568.net/music/Volcano.mp3">2. Volcano</a><br />
<a href="http://galeki.xy568.net/music/The Blower's Daughter.mp3">3. The Blower's Daughter</a><br />
<a href="http://galeki.xy568.net/music/Cannonball.mp3">4. Cannonball </a><br />
<a href="http://galeki.xy568.net/music/Older Chests.mp3">5. Order Chests</a><br />
<a href="http://galeki.xy568.net/music/Amie.mp3">6. Amie</a><br />
<a href="http://galeki.xy568.net/music/Cheers Darlin'.mp3">7. Cheers Darling</a><br />
<a href="http://galeki.xy568.net/music/Cold Water.mp3">8. Cold water</a><br />
<a href="http://galeki.xy568.net/music/I Remember.mp3">9. I remember</a><br />
<a href="http://galeki.xy568.net/music/Eskimo.mp3">10. Eskimo</a></p>
</td>
</tr>
'''
listname=ListName() #init parser
listname.feed(urls) #run parser
print listname.name
listname.close()
результат:
[ '1. Нежный ',' 2. Вулкан »,« 3. Дочь Воздуха »,« 4. Cannonball ',' 5. Заказать сундуки "," 6. Amie ',' 7. Cheers Darling ',' 8. Холодная вода ',' 9. Я помню ', '10. Эскимосско ']
неправильный пример:
# coding=utf-8
from sgmllib import SGMLParser #get SGML
class ListName(SGMLParser):#parser class
def reset(self):
self.is_a = False #get <a></a>
self.name=[] #get text
SGMLParser.reset(self)
def start_a(self,attrs):
self.is_a = True
def end_a(self):
self.is_a = False
def handle_data(self,data):
if self.is_a:
self.name.append(data)
if __name__ == '__main__':
urls='''
<tr>
<td height="207" colspan="2" align="left" valign="top" class="normal">
<p>Damien Rice - 《0》 </p>
<a href="http://galeki.xy568.net/music/Delicate.mp3">1. Delicate</a><br/>
<a href="http://galeki.xy568.net/music/Volcano.mp3">2. Volcano</a><br/>
<a href="http://galeki.xy568.net/music/The Blower's Daughter.mp3">3. The Blower's Daughter</a><br/>
<a href="http://galeki.xy568.net/music/Cannonball.mp3">4. Cannonball </a><br/>
<a href="http://galeki.xy568.net/music/Older Chests.mp3">5. Order Chests</a><br/>
<a href="http://galeki.xy568.net/music/Amie.mp3">6. Amie</a><br/>
<a href="http://galeki.xy568.net/music/Cheers Darlin'.mp3">7. Cheers Darling</a><br/>
<a href="http://galeki.xy568.net/music/Cold Water.mp3">8. Cold water</a><br/>
<a href="http://galeki.xy568.net/music/I Remember.mp3">9. I remember</a><br/>
<a href="http://galeki.xy568.net/music/Eskimo.mp3">10. Eskimo</a></p>
</td>
</tr>
'''
listname=ListName() #init parser
listname.feed(urls) #run parser
print listname.name
listname.close()
результат:
[' 1. Delicate ']