CSS selector support for BeautifulSoup.
Python
Latest commit 83cb691 Mar 27, 2013 @simonw Merge pull request #5 from peteboere/patch-1
Attribute names (e.g aria-*) now match - thanks, Pete Boere

README

A single function, select(soup, selector), that can be used to select items
from a BeautifulSoup instance using CSS selector syntax.

Currently supports type selectors, class selectors, id selectors, attribute
selectors and the descendant combinator.

soupselect requires BeautifulSoup v3.0.3 or above; it will not work with v2.x

Example usage:

    >>> from BeautifulSoup import BeautifulSoup as Soup
    >>> from soupselect import select
    >>> import urllib
    >>> soup = Soup(urllib.urlopen('http://slashdot.org/'))
    >>> select(soup, 'div.title h3')
    [<h3>
    <span><a href='//science.slashdot.org/'>Science</a>:</span> ...
    </h3>, <h3>
    <a href='//slashdot.org/articles/07/02/28/0120220.shtml'>Star Trek To ...
    </h3>
    ... ]

You can also monkey-patch the BeautifulSoup class itself:

    >>> from BeautifulSoup import BeautifulSoup as Soup
    >>> import soupselect; soupselect.monkeypatch()
    >>> import urllib
    >>> soup = Soup(urllib.urlopen('http://slashdot.org/'))
    >>> soup.findSelect('div.title h3')
    [<h3>
    ...