Рубрики
Без рубрики

Python HTML Parser.

Python HTML Parser, Python HTML.Parser Модуль, Python HTML Parsing Comments, стили CSS и теги скриптов JavaScript, Python HTML Parse Advance HTML-файл, Python HTML Parser Get Content Content Tage, Python HTMLParser Table Code.

Автор оригинала: Pankaj Kumar.

Python HTML.Parser Модуль дает нам Htmlparser Класс, который может быть подкладками для разбора текстовых файлов из формата HTML. Мы можем легко изменить логику для обработки HTML из HTTP-запроса, а также используя HTTP-клиент Отказ

Определение класса для Htmlparser выглядит как:

class html.parser.HTMLParser(*, convert_charrefs=True)

В этом уроке мы будем подкладка Htmlparser Класс наблюдать за поведением, представленному его функциями и играть с ним. Давайте начнем.

Python HTML Parser.

Как мы видели в классе определение Htmlparser , когда ценность для Convert_charrefs Это правда, все ссылки на характеристики (кроме тех, кто в Script / Стиль Элементы) преобразуются в соответствующие символы Unicode.

Методы обработчика этого класса (который мы увидим в следующем разделе), называются автоматически после того, как экземпляр класса встречает начальные теги, конечные теги, текст, комментарии и другие элементы разметки в строке HTML, переданные ему.

Когда мы хотим использовать этот класс, мы должны подкладка его, чтобы обеспечить нашу собственную функциональность. Прежде чем представить пример для того же, давайте также упомянем все функции класса, которые доступны для настройки. Вот они:

  • handle_startendtag : Эта функция управляет как начальным, так и конечным тегам HTML-документа при встречении путем передачи управления другими функциями, что понятно в его определении:
  • Handle_starttag : Эта функция предназначена для обработки стартачной встречи:
  • Handle_endtag : Эта функция управляет конечным тегом в строке HTML:
  • Handle_Carref : Эта функция обрабатывает ссылки на символы в строке, передаваемой ему, его определение дано как:
  • handle_entityref : Эта функция обрабатывает ссылку на сущность, его определение дано как:
  • Handle_data : Эта функция управляет данными в строке HTML и является одной из наиболее важных функций в этом классе, его определение дано как:
  • Handle_Comment : Эта функция управляет комментариями в HTML, его определение дано как:
  • Handle_pi : Эта функция управляет инструкциями по обработке в HTML, его определение дано как:
  • handle_decl : Эта функция управляет декларациями в HTML, его определение дано как:

Давайте начнем, предоставив подкласс Htmlparser чтобы увидеть некоторые из этих функций в действии.

Сделать подкласс для HTMLPARSER

В этом примере мы создадим подкласс Htmlparser И посмотрите, как называются наиболее распространенными способами обработчика для этого класса. Вот образец программы, которая подклассирует Htmlparser класс:

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Found a start tag:", tag)

    def handle_endtag(self, tag):
        print("Found an end tag :", tag)

    def handle_data(self, data):
        print("Found some data  :", data)

parser = MyHTMLParser()
parser.feed('JournalDev HTMLParser'
            '

Python html.parse module

')

Давайте посмотрим на вывод этой программы:

Подклассный класс HTMLParser

Три функции обработчика, которые мы показали выше, являются функциями, которые доступны для настройки из класса. Но это не единственные функции, которые могут быть переоценены. В следующем примере мы рассмотрим все передирасные функции.

Переопределение методов Parser HTML

В этом примере мы переопределим все функции класса HTMLParser. Давайте посмотрим на кодовый фрагмент класса:

from html.parser import HTMLParser
from html.entities import name2codepoint

class JDParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = JDParser()

Теперь мы будем использовать этот класс для анализа различных частей HTML-скрипта. Вот начиная с octype String:

parser.feed('
')

Давайте посмотрим на вывод этой программы:

HTMLPARSER DOCTYPE SPASING

Давайте посмотрим на фрагмент кода, который проходит IMG тег:

parser.feed('The Python logo')

Давайте посмотрим на вывод этой программы:

Обратите внимание, как тег был сломан, и атрибуты для тега также были извлечены.

Давайте попробуем Сценарий / Стиль Теги, а также чьи элементы не проанализированы:

parser.feed('')
parser.feed('')

Давайте посмотрим на вывод этой программы:

Комментарии для анализа также возможны с этим экземпляром:

parser.feed(''
            '')

С помощью этого метода мы можем управлять многими сопутствующими свойствами, а также посмотреть, поддерживает ли некоторые веб-страницы IE или нет:

Разборки комментариев

Разборные названные и числовые ссылки

Вот пример программы, с которой мы также можем анализировать ссылки на символы и преобразовывать их в правильный символ во время выполнения:

parser.feed('>>>')

Давайте посмотрим на вывод этой программы:

Разборные характеристики характера

Разбор неверный HTML

В некоторой степени мы также можем кормить недействительные данные HTML для функции подачи. Вот образец программы без кавычек по ссылке в Якорь тег:

parser.feed('

Invalid HTML

')

Давайте посмотрим на вывод этой программы:

Разбор неверный HTML

Это все для анализа данных HTML в Python, используя HTML.Parser модуль.

Ссылка: API док