Как получить ссылку и заголовок из этой (части) HTML-строки в Python - PullRequest
3 голосов
/ 28 августа 2011

Я пишу плагин для xbmc в Python. У меня есть список строк в формате:
<a href="/www.link.to/something">name of link</a>

С помощью красивого каменного супа (соответствующая часть кода):

 soup = BeautifulStoneSoup(link, convertEntities=BeautifulStoneSoup.XML_ENTITIES)
    programs = soup('ul')
    i = 0
    for prog in programs:
        i = i+1
        if i==(5+getLetterValue(name)):
            j = 0
            while j < len(prog('li')):
                li = prog('li')[j]
                link = li('a')[0]

getLeterValue - это функция, которая возвращает индекс, который указывает, где находится этот конкретный тег 'ul' (согласно желаемой букве).

Теперь я хочу разделить ссылку на ссылку и текст. Я пытался использовать re.compile:
match=re.compile('<a href="(.+?)">(.+?)</a>').findall(link.string)
но все, что я получаю, это match=[]

Что я сделал не так?

Примечание: Я знаю, что я должен regexp HTML-код, но я не уверен, что это «правило» действительно для маленькой строки. Кроме того, по какой-то причине это почти стандарт в написании плагинов xbmc, и я предполагаю, что для этого есть причины.

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Почему бы не позволить BeautifulSoup дать вам атрибут href и содержимое элемента ?

0 голосов
/ 29 августа 2011

Самый простой способ - использовать lxml:

from lxml.html import fromstring

elem = fromstring(link.string)
print elem.attrib["href"]
print elem.text
...