библиотека jQuery-как HTML парсинг в Python?
есть ли библиотека Python, которая позволяет мне анализировать HTML-документ, подобный тому, что делает jQuery?
т. е. я хотел бы иметь возможность использовать синтаксис селектора CSS для захвата произвольного набора узлов из документа, чтения их содержимого/атрибутов и т. д.
единственный Python HTML parsing lib, который я использовал раньше, был BeautifulSoup, и хотя это нормально, я продолжаю думать, что было бы быстрее сделать мой синтаксический анализ, если бы у меня был синтаксис jQuery. : D
3 ответов:
Если вы свободно владеете BeautifulSoup, вы могли бы просто добавить soupselect для вашей библиотеки.
Soupselect-это расширение селектора CSS для BeautifulSoup.использование:
>>> 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</h3>, ..]
Рассмотрим PyQuery:
http://packages.python.org/pyquery/
>>> from pyquery import PyQuery as pq >>> from lxml import etree >>> import urllib >>> d = pq("<html></html>") >>> d = pq(etree.fromstring("<html></html>")) >>> d = pq(url='http://google.com/') >>> d = pq(url='http://google.com/', opener=lambda url: urllib.urlopen(url).read()) >>> d = pq(filename=path_to_html_file) >>> d("#hello") [<p#hello.hello>] >>> p = d("#hello") >>> p.html() 'Hello world !' >>> p.html("you know <a href='http://python.org/'>Python</a> rocks") [<p#hello.hello>] >>> p.html() u'you know <a href="http://python.org/">Python</a> rocks' >>> p.text() 'you know Python rocks'
The lxml библиотека поддерживает селекторы CSS.
Comments