title: Is it possible for lxml to work in a case-insensitive manner?
body: <p>I'm trying to scrape META keywords and description tags from arbitrary websites. I obviusly have no control over said website, so have to take what I'm given. They have a variety of casings for the tag and attributes, which means I need to work case-insensitively. I can't believe that the lxml authors are as stubborn as to insist on full forced standards-compliance when it excludes much of the use of their library.</p>
  
  <p>I'd like to be able to say <code>doc.cssselect('meta[name=description]')</code> (or some XPath equivalent) but this will not catch <code>&lt;meta name="Description" Content="..."&gt;</code> tags due othe captial D.</p>
  
  <p>I'm currently using this as a workaround, but it's horrible!</p>
  
  <pre><code>for meta in doc.cssselect('meta'):
      name = meta.get('name')
      content = meta.get('content')
  
      if name and content:
          if name.lower() == 'keywords':
              keywords = content
          if name.lower() == 'description':
              description = content
  </code></pre>
  
  <p>It seems that the tag name <code>meta</code> is treated case-insensitively, but the attributes are not. It would be even more annoying <code>meta</code> was case-sensitive too!</p>