Парсер создавался для скрабинка карточек товаров с веб-сайтов.
Есть HTML веб-страница:
<html><head><title>Title page</title><metacharset="UTF-8"></head><body><h1class="name" data-name="Header">Header H1</h1><h2>Header H2.1</h2><h2>Header H2.2</h2><spandata-type="type1">Product description text</span><spanclass="price" elem="USD">$99</span><divid="product-gallery" value="1"><ahref="img1.jpg"><imgsrc="img1.jpg" alt="Image 1" /></a><ahref="img2.jpg"><imgsrc="img2.jpg" alt="Image 2" /></a><ahref="img3.jpg"><imgsrc="img3.jpg" alt="Image 3" /></a></div></body></html>Задаем шаблон для парсинга:
<template><h1class="name" data-name="$data-name">$Head1</h1><h2>$Head2</h2><spanelem="$Сurrency">$Price</span><spandata-type="$Type">$Description</span><divid="product-gallery" value="$product_gallery"><ahref="$Img"></a></div></template>${var} -- название переменной, в которую будет занесен результат.
result=ParserHTML(template, html_contents)
print(result.get())Массив данных
{'Head1': ['Header H1'], 'Head2': [['Header H2.1'], ['Header H2.2']], 'Price': ['$99'], 'Сurrency': 'USD', 'Description': ['Product description text'], 'Type': 'type1', 'product_gallery': '1', 'Img': ['img1.jpg', 'img2.jpg', 'img3.jpg']}Группировка, если задать атрибут group="имя группы". Если не заданно, тое именем будет тег узла Если установить атрибут nogroup, то из группы будет взята только первая группа значений