1 | ||
Editor: geon
Time: 2006/02/18 13:09:55 GMT+0 |
||
Note: |
changed: - <h1>Stažení a zpracování HTML stránky</h1> Princip stažení je stejný jako v StazeniWeboveStranky. Například tedy takto:: import urllib fp = urllib.urlopen('http://www.py.cz/PythonZaciname') data = fp.read() fp.close() Webovou stránku ale stahujeme abychom z ní něco vydolovali. Například: "Najdi všechny odkazy" nebo "Najdi všechny odkazy třídy <tt>vnejsiOdkazy</tt> nebo "Najdi všechny odkazy jejichž url je "neco.cz" nebo "Najdi tabulku, která má tučně hlavičku, a ten text mi dej." Odborně se tomu říká ''parsování'. !"HTMLParser":http://www.python.org/doc/2.4/lib/module-HTMLParser.html Vestavěný modul !HTMLParser je na to určen. Více se dozvíte v dokumentaci, uvedu zde jen malý praktický příklad. Vypíše všechny tagy 'a':: import urllib, HTMLParser class MyHTMLParser(HTMLParser.HTMLParser): "Obalka kolem tridy HTMLParser" def __init__(self): """Inicializace a reset teto instance.""" self.reset() self.all=[] def handle_starttag(self, tag, attrs): "Osetri startovaci tag" if tag=='a': self.all.append(attrs[0]) if __name__=='__main__': # stazeni z Netu fp = urllib.urlopen('http://www.py.cz/StazeniSouboru') vstup = fp.read() fp.close() myJob=MyHTMLParser() myJob.feed(vstup) myJob.close() print myJob.all BeautifulSoup Tento modul, který je třeba stáhnout umožňuje mnohem intuitivnější a přímočarejší práci s rozkouskováním HTML kodu. A mnohem více. Podobný kód, jako je uveden výše. Vypípše všechny odkazy ze stránky (které můžete následně stáhnout nebo otevírat :-)):: import urllib, BeautifulSoup fp = urllib.urlopen('http://www.py.cz/StazeniSouboru') data = fp.read() fp.close() soup=BeautifulSoup.BeautifulSoup(data) print soup('a') Více na BeautifulSoup. Existuje mnoho dalších nebo specializovanějších modulů. Najdete je snad na wiki.python.org. Můžete sem pak přidat své zkušenosti.
Princip stažení je stejný jako v StazeniWeboveStranky. Například tedy takto:
import urllib fp = urllib.urlopen('http://www.py.cz/PythonZaciname') data = fp.read() fp.close()
Webovou stránku ale stahujeme abychom z ní něco vydolovali. Například: "Najdi všechny odkazy" nebo "Najdi všechny odkazy třídy vnejsiOdkazy nebo "Najdi všechny odkazy jejichž url je "neco.cz" nebo "Najdi tabulku, která má tučně hlavičku, a ten text mi dej."
Odborně se tomu říká ''parsování'.
Vestavěný modul HTMLParser je na to určen. Více se dozvíte v dokumentaci, uvedu zde jen malý praktický příklad. Vypíše všechny tagy 'a':
import urllib, HTMLParser class MyHTMLParser(HTMLParser.HTMLParser): "Obalka kolem tridy HTMLParser" def __init__(self): """Inicializace a reset teto instance.""" self.reset() self.all=[] def handle_starttag(self, tag, attrs): "Osetri startovaci tag" if tag=='a': self.all.append(attrs[0]) if __name__=='__main__': # stazeni z Netu fp = urllib.urlopen('http://www.py.cz/StazeniSouboru') vstup = fp.read() fp.close() myJob=MyHTMLParser() myJob.feed(vstup) myJob.close() print myJob.all
Tento modul, který je třeba stáhnout umožňuje mnohem intuitivnější a přímočarejší práci s rozkouskováním HTML kodu. A mnohem více. Podobný kód, jako je uveden výše. Vypípše všechny odkazy ze stránky (které můžete následně stáhnout nebo otevírat :-)):
import urllib, BeautifulSoup fp = urllib.urlopen('http://www.py.cz/StazeniSouboru') data = fp.read() fp.close() soup=BeautifulSoup.BeautifulSoup(data) print soup('a')
Více na BeautifulSoup.
nebo specializovanějších modulů. Najdete je snad na wiki.python.org. Můžete sem pak přidat své zkušenosti.