Базовые настройки
Нормализация таблиц
Наверное вы уже встречали на страницах таблицы, в которых объединены ячейки или строки в определеном столбце. Это делает таблицу более читабельной для человека и менее читабельной для компьютера. Это достигается использованием таких аттрибутов как rowspan и colspan и очень затрудняет написание универсальной логики для прохода по строкам подобной таблицы.
Для упрощения этой задачи мы ввели специальный параметр normalize_tables, использовав который вы сможете автоматически разъединить все объединенные ячейки и строки, при этом содержимое объединенных ячеек будет продублировано в разъединенных ячейках. Это позволит вам просто проходить построчно по таблице и забирать все данные используя единую логику для любой строки.
Пример использования нормализации таблиц:
---
config:
debug: 2
agent: Firefox
# ВКЛЮЧАЕМ АВТОМАТИЧЕСКУЮ НОРМАЛИЗАЦИЮ ТАБЛИЦ
normalize_tables: yes
do:
- walk:
to: https://www.diggernaut.com/sandbox/meta-lang-normalize-tables-ru.html
do:
- find:
path: '#table-1'
do:
- find:
path: '#table-2'
do:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Diggernaut | Мета-язык | Пример использования нормализации таблиц</title>
</head>
<body>
<table id="table-1" width="200" border="1" cellpadding="4" cellspacing="0">
<tr>
<td rowspan="2" bgcolor="#FBF0DB">Ячейка 1</td>
<td>Ячейка 2</td>
</tr>
<tr>
<td>Ячейка 3</td>
</tr>
</table>
<br/>
<table id="table-2" width="200" border="1" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#FBF0DB">Ячейка 1</td>
</tr>
<tr>
<td>Ячейка 2</td>
<td>Ячейка 3</td>
</tr>
</table>
</body>
</html>
Время | Уровень | Сообщение |
---|---|---|
2017-10-22 22:53:53:843 | info | Scrape is done |
2017-10-22 22:53:53:836 | debug | Block content:
<tbody> <tr> <td colspan="1" bgcolor="#FBF0DB">Ячейка 1</td> <td colspan="1" bgcolor="#FBF0DB">Ячейка 1</td> </tr> <tr> <td>Ячейка 2</td> <td>Ячейка 3</td> </tr> </tbody> |
2017-10-22 22:53:53:828 | debug | Number of found blocks: 1 |
2017-10-22 22:53:53:821 | debug | Looking for: #table-2 |
2017-10-22 22:53:53:814 | debug | Block content:
<tbody> <tr> <td rowspan="1" bgcolor="#FBF0DB">Ячейка 1</td> <td>Ячейка 2</td> </tr> <tr> <td rowspan="1" bgcolor="#FBF0DB">Ячейка 1</td> <td>Ячейка 3</td> </tr> </tbody> |
2017-10-22 22:53:53:808 | debug | Number of found blocks: 1 |
2017-10-22 22:53:53:801 | debug | Looking for: #table-1 |
2017-10-22 22:53:53:790 | debug | Page content: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример использования нормализации таблиц</title> </head> <body> <table id="table-1" width="200" border="1" cellpadding="4" cellspacing="0"> <tbody> <tr> <td rowspan="1" bgcolor="#FBF0DB">Ячейка 1</td> <td>Ячейка 2</td> </tr> <tr> <td rowspan="1" bgcolor="#FBF0DB">Ячейка 1</td> <td>Ячейка 3</td> </tr> </tbody> </table> <br/> <table id="table-2" width="200" border="1" cellpadding="4" cellspacing="0"> <tbody> <tr> <td colspan="1" bgcolor="#FBF0DB">Ячейка 1</td> <td colspan="1" bgcolor="#FBF0DB">Ячейка 1</td> </tr> <tr> <td>Ячейка 2</td> <td>Ячейка 3</td> </tr> </tbody> </table> </body> </html> |
2017-10-22 22:53:52:945 | info | Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-normalize-tables-ru.html |
2017-10-22 22:53:52:937 | info | Starting scrape |
2017-10-22 22:53:52:920 | debug | Setting up default proxy |
2017-10-22 22:53:52:906 | debug | Setting up surf |
2017-10-22 22:53:52:880 | info | Starting digger: meta-lang-normalize-tables [1857] |
По умолчанию нормализация таблиц выключена.
Обратите внимение!
Для включения опции необходимо указать значение yes без кавычек.