Автор Тема: Скопировать таблицу HTML в двумерный массив  (Прочитано 214 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн joparezzz [?]

  • Новичок
  • *
  • Сообщений: 58
  • Репутация: 0
  • Пол: Мужской
    • Награды
Версия AutoIt: 3.3.0.

Описание:
Есть файл html, см. вложение.
В этом файле есть таблица, см. ниже.
Каким образом найти эту таблицу, в файле html, и скопировать в двумерный массив значения столбцов <td colspan="17" class="s13">Материал</td> и <td colspan="5" class="s13">Размещено</td>
<tr style="height:19px">
<td colspan="62" class="s1">Заданный материал</td>
</tr>
<tr style="height:29px">
<td colspan="4" class="s5">№ в таблице</td><td colspan="17" class="s13">Материал</td><td colspan="9" class="s13">Длина</td><td colspan="9" class="s13">Ширина режущей части</td><td colspan="9" class="s13">Кол-во</td><td colspan="5" class="s13">Размещено</td><td colspan="3" class="s13">Примечание</td><td colspan="6" rowspan="5" class="s3" style="font-size:1px">&nbsp;</td>
</tr>
<tr style="height:19px">
<td colspan="4" class="s16">1</td><td colspan="17" class="s17">TA-GN 120x60</td><td colspan="9" class="s15">2000</td><td colspan="9" class="s15">0</td><td colspan="9" class="s15">50</td><td colspan="5" class="s15">15</td><td colspan="3" class="s17">DKC TA-GN 120x60</td>
</tr>
<tr style="height:19px">
<td colspan="4" class="s16">2</td><td colspan="17" class="s17">TA-GN 60x60</td><td colspan="9" class="s15">2000</td><td colspan="9" class="s15">0</td><td colspan="9" class="s15">50</td><td colspan="5" class="s15">1</td><td colspan="3" class="s17">DKC TA-GN 60x60</td>
</tr>
<tr style="height:19px">
<td colspan="4" class="s16">3</td><td colspan="17" class="s17">TA-EN 40x40</td><td colspan="9" class="s15">2000</td><td colspan="9" class="s15">0</td><td colspan="9" class="s15">50</td><td colspan="5" class="s15">12</td><td colspan="3" class="s17">DKC TA-EN 40x40</td>
</tr>
<tr style="height:19px">
<td colspan="4" class="s16">4</td><td colspan="17" class="s17">IEK 15x10</td><td colspan="9" class="s15">2000</td><td colspan="9" class="s15">0</td><td colspan="9" class="s15">50</td><td colspan="5" class="s15">3</td><td colspan="3" class="s17">IEK 15x10</td>
</tr>
<tr style="height:19px">
<td colspan="4" class="s16">5</td><td colspan="17" class="s17">IEK 80x200x3000</td><td colspan="9" class="s15">3000</td><td colspan="9" class="s15">0</td><td colspan="9" class="s15">50</td><td colspan="5" class="s15">6</td><td colspan="3" class="s17">IEK 80x200x3000</td><td colspan="6" rowspan="2" class="s3" style="font-size:1px">&nbsp;</td>
</tr>
<tr style="height:15px">
<td colspan="56" class="s3" style="font-size:1px">&nbsp;</td>
</tr>


Примечания:  файл html во вложении


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Март 19, 2018, 11:13:32 от joparezzz »

Русское сообщество AutoIt

Скопировать таблицу HTML в двумерный массив
« Отправлен: Март 19, 2018, 11:05:31 »

Онлайн gunter123 [?]

  • Осваивающий
  • **
  • Сообщений: 78
  • Репутация: 31
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Показывает все таблицы на странице в виде массива
Код: AutoIt [Выделить]
#include <Array.au3>
#include <IE.au3>                                      ; Если надо просмотреть локальный файл, можно открыть его в браузере, а потом уже Attach
$oIE = _IEAttach('Сводный отчет', 'text')
For $i = 0 To 100
   $aDataTable = _IETableGetCollection($oIE, $i)
   If @error Then ExitLoop
   $aDataTable = _IETableWriteToArray($aDataTable, 1)  ; Второй параметр меняет строки и столбцы местами
   _ArrayDisplay($aDataTable, $i)
Next

« Последнее редактирование: Март 19, 2018, 11:54:04 от gunter123 »
Is it future or is it past?

Оффлайн joparezzz [?]

  • Новичок
  • *
  • Сообщений: 58

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
Написал код:
Код: AutoIt [Выделить]
#include <Array.au3>
$sText = FileRead(@ScriptDir & '\555.html')
;<td colspan="4" class="s16">1</td><td colspan="17" class="s17">TA-GN 120x60</td><td colspan="9" class="s15">2000</td><td colspan="9" class="s15">0</td><td colspan="9" class="s15">50</td><td colspan="5" class="s15">15</td><td colspan="3" class="s17">DKC TA-GN 120x60</td>
$avArray = StringRegExp($sText, '<td colspan="17" class="s17">(.*?)</td>'  & '.*'  &  '<td colspan="5" class="s15">(.*?)</td>', 3)
_ArrayDisplay($avArray)
 


Вроде как извлекает нужные данные. Как исправить структуру массива, чтоб значения '<td colspan="5" class="s15">(.*?)</td>' подставлялись во второй столбец массива


Добавлено: Март 19, 2018, 12:37:10
Вроде работает:
Код: AutoIt [Выделить]
#include <Array.au3>
$sText = FileRead(@ScriptDir & '\555.html')
$aCol0 = StringRegExp($sText, '<td colspan="17" class="s17">(.*?)</td>' & '.*' & '<td colspan="5" class="s15">.*?</td>', 3)
$aCol1 = StringRegExp($sText, '<td colspan="17" class="s17">.*?</td>' & '.*' & '<td colspan="5" class="s15">(.*?)</td>', 3)

Dim $aCol[0][0]
For $i = 0 To UBound($aCol0) - 1
    ReDim $aCol[$i + 1][2]
    $aCol[$i][0] = $aCol0[$i]
    $aCol[$i][1] = $aCol1[$i]
Next
_ArrayDisplay($aCol)
 

« Последнее редактирование: Март 19, 2018, 12:37:10 от joparezzz, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: Скопировать таблицу HTML в двумерный массив
« Ответ #2 Отправлен: Март 19, 2018, 11:53:55 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
5419 Просмотров
Последний ответ Апрель 07, 2010, 16:37:07
от CreatoR
9 Ответов
5826 Просмотров
Последний ответ Декабрь 29, 2011, 17:00:22
от AZJIO
4 Ответов
2601 Просмотров
Последний ответ Апрель 08, 2012, 15:17:57
от inververs
2 Ответов
1145 Просмотров
Последний ответ Май 08, 2014, 06:13:46
от TwDY
4 Ответов
2271 Просмотров
Последний ответ Июнь 05, 2014, 10:36:41
от Z_Lenar
0 Ответов
896 Просмотров
Последний ответ Июнь 04, 2014, 21:22:31
от madmasles
1 Ответов
1314 Просмотров
Последний ответ Ноябрь 28, 2014, 13:03:04
от InnI
4 Ответов
1676 Просмотров
Последний ответ Февраль 04, 2015, 08:28:03
от sanek2000
5 Ответов
315 Просмотров
Последний ответ Март 09, 2018, 11:06:41
от Alofa
4 Ответов
167 Просмотров
Последний ответ Март 14, 2018, 15:50:11
от Tempo