Удалить теги из разбираемого красивого супового списка?
В данный момент я попадаю в цикл for со всеми строками, которые я хочу:
page = urllib2.urlopen(pageurl)
soup = BeautifulSoup(page)
tables = soup.find("td", "bodyTd")
for row in tables.findAll('tr'):
На данный момент у меня есть моя информация, но
<br />
Теги портят мой вывод.
Какой самый чистый способ удалить их?
4 ответа:
Если вы хотите перевести
<br />
в новые строки, сделайте что-то вроде этого:def text_with_newlines(elem): text = '' for e in elem.recursiveChildGenerator(): if isinstance(e, basestring): text += e.strip() elif e.name == 'br': text += '\n' return text
Замените теги в начале пробелом Красивый суп тоже принимает свое .read () на объекте urlopen, так что это должно работать - - -
page = urllib2.urlopen(pageurl) page_text=page.read() new_text=re.sub('</br>',' ',page_text) soup = BeautifulSoup(new_text) tables = soup.find("td", "bodyTd") for row in tables.findAll('tr'): .....
Огонь.sub заменяет тег br пробелом
Может быть,
some_string.replace('<br />','\n')
заменить разрывы новыми строками.>>> print 'Some data<br />More data<br />'.replace('<br />','\n') Some data More data
Вы можете проверить html5lib и lxml, которые оба довольно хороши в синтаксическом анализе html. lxml действительно быстр, а html5lib разработан, чтобы быть чрезвычайно надежным.