Образец скрипта, который разбирает HTML:
# -*- coding: utf-8 -*-
import codecs, sys, os
from BeautifulSoup import BeautifulSoup
import urllib2
sys.stdout = codecs.getwriter('cp866')(sys.stdout, errors='replace')
f = urllib2.urlopen(urllib2.Request('http://luxter.nnm.ru/zenit_chempion_'))
soupHTML = BeautifulSoup(f.read())
f.close()
newText = soupHTML.find("div", {"class":"new-text"})
res = unicode(newText)
res = res.replace('<b>', '').replace('</b>', '')
res = res.replace('<i>', '').replace('</i>', '')
res = res.replace('<u>', '').replace('</u>', '')
res = res.replace(''', '\'').replace('"', '"')
soupHTML = BeautifulSoup(res)
newText = soupHTML.find("div", {"class":"new-text"})
for elem in newText.contents:
if type(elem).__name__ == 'NavigableString':
if len(elem.strip()) > 0:
print elem.strip()
Скрипт выводит разобранный текст, и в первом же предложении встречаются дурацкие двойные кавычки типа «», которые заданы в HTML-коде не примитивами, а “напрямую”. Суп их не понимает, и выводит вопросиками. Есть ли способ получить эти кавычки в Супе каким-то более вменяемым способом?