библиотека jQuery-как HTML парсинг в Python?



есть ли библиотека Python, которая позволяет мне анализировать HTML-документ, подобный тому, что делает jQuery?



т. е. я хотел бы иметь возможность использовать синтаксис селектора CSS для захвата произвольного набора узлов из документа, чтения их содержимого/атрибутов и т. д.



единственный Python HTML parsing lib, который я использовал раньше, был BeautifulSoup, и хотя это нормально, я продолжаю думать, что было бы быстрее сделать мой синтаксический анализ, если бы у меня был синтаксис jQuery. : D

512   3  

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

    Ничего не найдено.