Python - triviální HTML parser: Porovnání verzí
m triviální HTML parser |
mBez shrnutí editace |
||
(Není zobrazeno 6 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
Program definuje triviální uživatelskou třídu Parser, načte ze zadaného URL HTML stránku a vypíše na standardní výstup preformátovaný text dané stránky, tj. text uzavřený ve značce/značkách <tt><pre></tt> | Program definuje triviální uživatelskou třídu Parser, načte ze zadaného URL HTML stránku a vypíše na standardní výstup preformátovaný text dané stránky, tj. text uzavřený ve značce/značkách <tt><pre></tt> | ||
< | '''Poznámka:''' jde o příklad parseru řízeného událostmi, tj. parseru ve kterém definujeme ''call-back funkce'' pro zpracování událostí (v tomto případě HTML značek, resp. značky PRE). | ||
#!/usr/bin/python coding=utf-8 | |||
<source lang=python> | |||
#!/usr/bin/python | |||
# coding=utf-8 | |||
import sgmllib | import sgmllib | ||
Řádek 22: | Řádek 25: | ||
def handle_data(self, data): | def handle_data(self, data): | ||
"Tisk textu ve značce | "Tisk textu ve značce PRE " | ||
if self.inside_pre: | if self.inside_pre: | ||
Řádek 28: | Řádek 31: | ||
def start_pre(self, data): | def start_pre(self, data): | ||
"Zpracovaní otevirací značky | "Zpracovaní otevirací značky PRE " | ||
self.inside_pre = 1 | self.inside_pre = 1 | ||
def end_pre(self): | def end_pre(self): | ||
"Zpracovaní koncové značky | "Zpracovaní koncové značky /PRE " | ||
self.inside_pre = 0 | self.inside_pre = 0 | ||
Řádek 41: | Řádek 44: | ||
import urllib | import urllib | ||
usock = urllib.urlopen( | usock = urllib.urlopen('http://geo.fsv.cvut.cz/gwiki/Python_-_trivi%C3%A1ln%C3%AD_HTML_parser') | ||
page = usock.read() | page = usock.read() | ||
Řádek 48: | Řádek 51: | ||
parser = Parser() | parser = Parser() | ||
parser.parse(page) | parser.parse(page) | ||
</ | </source> | ||
{{Python}} |
Aktuální verze z 3. 4. 2012, 10:06
Program definuje triviální uživatelskou třídu Parser, načte ze zadaného URL HTML stránku a vypíše na standardní výstup preformátovaný text dané stránky, tj. text uzavřený ve značce/značkách <pre>
Poznámka: jde o příklad parseru řízeného událostmi, tj. parseru ve kterém definujeme call-back funkce pro zpracování událostí (v tomto případě HTML značek, resp. značky PRE).
#!/usr/bin/python
# coding=utf-8
import sgmllib
class Parser(sgmllib.SGMLParser):
"Triviální HTML parser, vypiše obsah značky/značek <pre>"
# podle http://www.boddie.org.uk/python/HTML.html
def parse(self, s):
"Zpracuje zadaný řetězec 's'."
self.feed(s)
self.close()
def __init__(self, verbose=0):
"Inicializace objektu, 'verbose' se předává rodičovské třídě"
sgmllib.SGMLParser.__init__(self, verbose)
self.inside_pre = 0
def handle_data(self, data):
"Tisk textu ve značce PRE "
if self.inside_pre:
print data,
def start_pre(self, data):
"Zpracovaní otevirací značky PRE "
self.inside_pre = 1
def end_pre(self):
"Zpracovaní koncové značky /PRE "
self.inside_pre = 0
import urllib
usock = urllib.urlopen('http://geo.fsv.cvut.cz/gwiki/Python_-_trivi%C3%A1ln%C3%AD_HTML_parser')
page = usock.read()
usock.close()
parser = Parser()
parser.parse(page)