Page 106 - 6734
P. 106

{'first': '1'}
           one
           two
           <root><one /><two first="1">text<two_one
           />text</two></root>
           root one two two_one

                   HTMLParser – простий парсер HTML і XHTML
               Цей модуль визначає клас HTMLParser, який служить як основа
           для  синтаксичного  аналізу  файлів  HTML  і  XHTML  [19].  Для
           парсингу  необхідно  створити  похідний  від  HTMLParser  клас  і
           перевизначити  його  методи.  У  Python  2.7  працює  також  із
           некоректними     html.   Для    високопродуктивного     парсингу
           використовуйте lxml (з ElementTree API) або Beautiful Soup.

           from HTMLParser import HTMLParser

           class MyHTMLParser(HTMLParser): # успадковує
           HTMLParser і перевизначає його методи, шукає дані
           усіх тегів <p>
               def __init__(self): # конструктор
                   HTMLParser.__init__(self)
                   self.intag = False # в середині тегу?
                   self.data = [] # список знайдених даних
               def handle_starttag(self, tag, attrs):
                   "Викликається коли знайдено початковий тег
           (наприклад <p>)"
                   print "Початковий тег", tag
                   print "Атрибути", attrs
                   if tag=='p': # якщо тег p
                       self.intag=True # знаходимось всередині
           тегу
               def handle_endtag(self, tag):
                   "Викликається коли знайдено кінцевий тег
           (наприклад </p>)"

                                         105
   101   102   103   104   105   106   107   108   109   110   111