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