LINUX.ORG.RU

В питоне что-то насчет парсинга HTML есть. Даже в качестве "батареек".

В PHP готовых средств, даже в PEAR, для парсинга SGML любого вида, не имеется.

Ждем, что скажут еще о руби.

shimon ★★★★★
()
Ответ на: комментарий от anonymous

http://docs.python.org/lib/module-HTMLParser.html


это парсер а-ля SAX, т.е. код выглядит примерно вот так
(http://docs.python.org/lib/htmlparser-example.html):

class MyHTMLParser(HTMLParser):

    def handle_starttag(self, tag, attrs):
        print "Encountered the beginning of a %s tag" % tag

    def handle_endtag(self, tag):
        print "Encountered the end of a %s tag" % tag

дерева он сам по себе не строит, но по идее сорганизовать 
это не сложно (если тэги в html-е правильно закрываются).

scotinomys
()

возможно для твоей задачи подойдёт BeautifulSoup.
правда таких уродских индексов как у TreeBuilder там нет,
но пользоваться можно.

>>> from BeautifulSoup import *
>>> from urllib import urlopen
>>> s = urlopen('http://linux.org.ru/view-all.jsp').read()
>>> t = BeautifulSoup(unicode(s,'koi8-r'))
>>> t.html.head.title
<title>LINUX.ORG.RU - Русская информация об ОС Linux</title>
>>> t.html.body.table.contents[1].td.img
<img src="/black/newhead1.gif" alt="Русская информация об ОС LINUX" width="266" height="114" />



брать тут: http://www.crummy.com/software/BeautifulSoup/

scotinomys
()
Ответ на: комментарий от shimon

> Ждем, что скажут еще о руби.

RAA - htree ( http://raa.ruby-lang.org/project/htree/ )

"
htree provides a tree data structre which represent HTML and XML data.

* Permissive unified HTML/XML parser
* byte-to-byte roundtripping unparser
* XML namespace support
* Dedicated class for escaped string. This ease sanitization.
* HTML/XHTML/XML generator
* template engine
* recursive template expansion
* converter to REXML document
"

RAA - html-parser-2 ( http://raa.ruby-lang.org/project/html-parser-2/ )

The html-parser package is a variant language implementation of the Python's SGML parser (sgmllib.py), HTML parser (htmllib.py) and Formatter (formatter.py).

romka
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.