Is it possible for BeautifulSoup to work in a case-insensitive manner?
You can give BeautifulSoup a regular expression to match attributes against. Something like
soup.findAll('meta', name=re.compile("^description$", re.I))
might do the trick. Cribbed from the BeautifulSoup docs.
A regular expression? Now we have another problem.
Instead, you can pass in a lambda:
soup.findAll(lambda tag: tag.name.lower()=='meta',
name=lambda x: x and x.lower()=='description')
(x and
avoids an exception when the name
attribute isn't defined for the tag)