Ответ 1
for e in soup.findAll('br'):
e.extract()
Я сейчас вхожу в цикл for со всеми строками, которые я хочу:
page = urllib2.urlopen(pageurl)
soup = BeautifulSoup(page)
tables = soup.find("td", "bodyTd")
for row in tables.findAll('tr'):
В этот момент у меня есть моя информация, но
<br />
Теги разрушают мой вывод.
Какой самый чистый способ их удалить? Спасибо.
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'):
.....
re.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 разработан, чтобы быть чрезвычайно надежным.