Удаление тегов из HTML, разобранных с BeautifulSoup - PullRequest
3 голосов
/ 27 августа 2010

Я новичок в python и использую BeautifulSoup для анализа веб-сайта, а затем для извлечения данных.У меня есть следующий код:

for line in raw_data: #raw_data is the parsed html separated into smaller blocks
    d = {}
    d['name'] = line.find('div', {'class':'torrentname'}).find('a')
    print d['name']

<a href="/ubuntu-9-10-desktop-i386-t3144211.html">
<strong class="red">Ubuntu</strong> 9.10 desktop (i386)</a>

Обычно я могу извлечь 'Ubuntu 9.10 desktop (i386)', написав:

d['name'] = line.find('div', {'class':'torrentname'}).find('a').string

, но из-за сильных тегов html он возвращаетНикто.Есть ли способ извлечь сильные теги, а затем использовать .string или есть лучший способ?Я пытался использовать функцию extract () BeautifulSoup, но не смог заставить ее работать.

Редактировать: я только что понял, что мое решение не работает, если между двумя словами есть два набора сильных тегов в качестве пробела.опущены.Как можно решить эту проблему?

1 Ответ

3 голосов
/ 29 августа 2010

Используйте свойство ".text":

d['name'] = line.find('div', {'class':'torrentname'}).find('a').text

Или выполните объединение для findAll (text = True):

anchor = line.find('div', {'class':'torrentname'}).find('a')
d['name'] = ''.join(anchor.findAll(text=True))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...