Удалить теги из разбираемого красивого супового списка?


В данный момент я попадаю в цикл for со всеми строками, которые я хочу:

page = urllib2.urlopen(pageurl)
soup = BeautifulSoup(page)
tables = soup.find("td", "bodyTd")
for row in tables.findAll('tr'):

На данный момент у меня есть моя информация, но

<br />

Теги портят мой вывод.

Какой самый чистый способ удалить их?

4 12

4 ответа:

for e in soup.findAll('br'):
    e.extract()

Если вы хотите перевести <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 разработан, чтобы быть чрезвычайно надежным.