Skip to content

Commit d791bf5

Browse files
authored
Update article.md
1 parent d20962d commit d791bf5

1 file changed

Lines changed: 8 additions & 19 deletions

File tree

dou/article.md

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -67,32 +67,21 @@
6767
* `div{sku:with:SKU}` - означає "шукати тег `div` с текстом, який має підтекст 'SKU'" і покласти в змінну `sku`
6868
* `p{text}[attr=ref]` - означає "шукати тег `p` с будь яким текстом і атрибутом `ref`" і покласти текст в змінну `text`, а атрибут в змінну `attr`
6969

70-
# 🧪 Результат, який повертає Harvester
70+
Справа - знизу на малюнку Ви можете побачити приклад того, що повертає бібліотека. Це звичайний JSON, ключі якого - це наші змінні, яки ми зазначили в шаблоні (product, price, img, sku).
7171

72-
```js
73-
{
74-
product: "Product Name",
75-
price: 99.99,
76-
img: "https://...jpg",
77-
sku: "SKU: 4278654"
78-
}
79-
```
80-
81-
Такий самий результат буде отримано **з будь-якої структури**, доки дані присутні.
82-
83-
---
72+
## Як працює Harvester всередині
8473

85-
# 📦 Як працює Harvester всередині
74+
![image](https://github.com/tmptrash/harvester/blob/main/dou/slides/Screenshot%202025-11-30%20at%2014.50.49-cut.png?raw=true)
8675

87-
У презентації я показував проблеми класичного DOM-парсингу:
76+
На малюнку показано як саме бібліотека порівнює два дерева - дерево наших даних, яке ми отримали із DSL шаблона (на малюнку зліва - klm) і DOM дерево (на малюнку правіше 1234...). Справа і знизу Ви можете побачити частину варіантів, які бібліотека порівнює.
8877

89-
Harvester використовує **fuzzy tree matching**:
78+
Бібліотека використовує **fuzzy tree matching**:
9079

91-
1. Розбирає DSL у дерево шаблону
92-
2. Проходить DOM
80+
1. Розбирає DSL шаблон у JSON дерево
81+
2. Проходить по DOM
9382
3. Шукає найближчу відповідність
9483
4. Вичитує текст/числа/атрибути згідно з типами
95-
5. Повертає результат
84+
5. Повертає результат у вигляді JSON
9685

9786
### Проблеми, які довелося вирішити:
9887

0 commit comments

Comments
 (0)