Edit detail for ParsovaniWeboveStranky revision 1 of 1

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.

Stažení a zpracování HTML stránky

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í'.

HTMLParser

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.