Разбор контента с красивым супом между двумя закрывающими тегами - PullRequest
2 голосов
/ 20 ноября 2011

Я использую BeautifulSoup для анализа содержимого веб-страницы с информацией об исполнителе и альбоме.Я проанализировал информацию до этого:

`<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &amp; <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>`

Название альбома (в данном случае «Watch the Throne») всегда перед закрывающим тегом </span>.

Мне нужно проанализировать данные альбома из всего элемента <span> независимо от того, сколько исполнителей включено в альбом, будь то отдельный исполнитель или 30 исполнителей.

Сложность заключаетсяна самом деле, название альбома находится между двумя закрывающими тегами.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 20 ноября 2011
>>> from BeautifulSoup import BeautifulSoup
>>> html = '''<span dir="ltr"><a href="unique?id=1234">Jay-Z</a> &amp; 
... <a href="unique?id" = 321">Kanye West</a> - Watch the Throne</span>'''
>>> soup = BeautifulSoup(html)
>>> soup.span.contents[-1].strip('- ')
u'Watch the Throne'
0 голосов
/ 20 ноября 2011

если s - это элемент супа, то:

album = s.findAll('a')[-1].nextSibling

Я думаю, вы можете очистить "-" самостоятельно, удачи, я люблю beautifulsoup

0 голосов
/ 20 ноября 2011

Если я правильно понимаю, название альбома всегда будет в конце элемента span. Вы можете попытаться найти последний индекс закрытия a-тега и последний индекс закрытия span-тега и по этой строке построить строку, содержащую информацию об альбоме.

Таким образом, с помощью theString.rfind("</a>") вы найдете начальный индекс и theString.rfind("</span>"), чтобы найти индекс закрытия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...