Python, извлекающий атрибуты тегов HTML без регулярных выражений - PullRequest
0 голосов
/ 22 августа 2011

Есть ли способ использовать urlib, urllib2 или BeautifulSoup для извлечения атрибутов HTML-тегов?

например:

<a href="xyz" title="xyz">xyz</a>

получает href=xyz, title=xyz

В другом потоке говорится об использовании регулярных выражений

Спасибо

Ответы [ 2 ]

6 голосов
/ 22 августа 2011

Вы можете использовать BeautifulSoup для анализа HTML, а для каждого тега <a> используйте tag.attrs, чтобы прочитать атрибуты:

In [111]: soup = BeautifulSoup.BeautifulSoup('<a href="xyz" title="xyz">xyz</a>')

In [112]: [tag.attrs for tag in soup.findAll('a')]
Out[112]: [[(u'href', u'xyz'), (u'title', u'xyz')]]
5 голосов
/ 22 августа 2011

почему бы вам не попробовать модуль HTMLParser?

Примерно так:

import HTMLParser
import urllib

class parseTitle(HTMLParser.HTMLParser):

    def handle_starttag(self, tag, attrs):
        if tag == 'a':
            for names, values in attrs:
                if name == 'href':
                    print value # or the code you need.
                if name == 'title':
                    print value # or the code you need.



aparser = parseTitle()
u = urllib.open('http://stackoverflow.com') # change the address as you like
aparser.feed(u.read())
...