On Apr 1, 5:25 pm, 7stud <[EMAIL PROTECTED]> wrote: > You can treat a tag like a dictionary to obtain a specific attribute: > > import BeautifulSoup as bs > > html = "<div x='a' y='b' z='c'>hello</div>" > > doc = bs.BeautifulSoup(html) > div = doc.find("div") > print div > print div["x"] > > --output:-- > a > > But you can't iterate over a tag to get all the attributes: > > import BeautifulSoup as bs > > html = "<div x='a' y='b' z='c'>hello</div>" > > doc = bs.BeautifulSoup(html) > div = doc.find("div") > > for key in div: > print key, div[key] > > --output:-- > hello > Traceback (most recent call last): > File "test1.py", line 9, in ? > print key, div[key] > File "/Library/Frameworks/Python.framework/Versions/2.4/lib/ > python2.4/site-packages/BeautifulSoup.py", line 430, in __getitem__ > return self._getAttrMap()[key] > KeyError: u'hello' > > How can you get all the attributes when you don't know the attribute > names ahead of time?
I figured it out: import BeautifulSoup as bs html = "<div x='a' y='b' z='c'>hello</div>" doc = bs.BeautifulSoup(html) div = doc.find("div") for attr, val in div.attrs: print "%s:%s" % (attr, val) --output:-- x:a y:b z:c -- http://mail.python.org/mailman/listinfo/python-list