Что нового

Обработка таблиц в HTML

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
r35p3ct [?]
В общем сами телефоны
Это понятно, но какой именно результат ожидается, в текстовом виде его можно увидеть, а не его описание? :smile:


Добавлено:
Сообщение автоматически объединено:

Я бы сделал так:

Код:
$a='            <td>Телефон</td><td>дом.111-09-91, моб.906-221-11-11, моб.903-333-44-44</td>'
;$a='           <td>Телефон</td><td>дом.111-09-91, моб.906-222-11-11</td>'
;$a='           <td>Телефон</td><td>дом.111-09-91</td>'

$sPattern = '.*?(?:(\d+)(-?)(,?)|).*?'
$TEL = StringRegExpReplace($a, $sPattern , '\1\2\3')
ConsoleWrite($TEL & @LF)
 

IgRo

Знающий
Сообщения
65
Репутация
5
а если HTML рассмотреть как XML структуру и воспользоваться "XML DOM wrapper (COM)"
http://www.autoitscript.com/forum/index.php?showtopic=19848&st=0
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Помогите упростить этот код, чтобы одной строкой получилось.
Требуется взять текст, что после последней > и в нем заменить & на спец. символ.
PS & может быть несколько.

Код:
$b1='1. ляля>3>Ребут&Работает'
;$b1='1. ляля>3>Ребут&Работает&Не работает'
$c=StringRegExpReplace($b1,'.*>(.*)','\1')
$c=StringRegExpReplace($c,'&',@CRLF)

ConsoleWrite($c&@LF)

Код:
Ребут
Работает
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
r35p3ct [?]
Помогите упростить этот код, чтобы одной строкой получилось.
Вот вариант, но он добавляет лишние строки в начало результата:
Код:
$c = StringRegExpReplace($b1, '.*>(.*?)|&', '\1' & @CRLF)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Vlasssov сказал(а):
Собственно как средствами AutoIt получить доступ ячейкам произвольной таблицы? Сочинил простейший пример

Код:
<table width="200" border="1">
  <tr>
    <td>Ячейка 1</td>
    <td>Ячейка 2</td>
    <td>Ячейка 3</td>
  </tr>
  <tr>
    <td>Ячейка 4</td>
    <td>Ячейка 5</td>
    <td>Ячейка 6</td>
  </tr>
  <tr>
    <td><b>Ячейка 7</b></td>
    <td>Ячейка 8</td>
    <td>Ячейка 9</td>
  </tr>
</table>
Как получить доступ к ячейку с текстом Ячейка 1, причем найти там определенный фрагмент? Фрагмент-то я сам найду, :laugh:, а вот можно получить доступ к ячейки как к объекту с определенными свойствами?

Тема была создана очень давно, и, похоже, человек решил свою задачу, но все же может, кому и пригодится. :smile:

Код:
#include <Constants.au3>
#include <IE.au3>
#include <Array.au3>

$oIE = _IECreate("http://test.lan/test.html",0,0,1,1)
$oTables = _IETableGetCollection($oIE,0)
$aTable = _IETableWriteToArray($oTables,True)
ConsoleWrite("Строка: [0] Колонка: [0] Значение: "& "'"& $aTable[0][0] &"'" &@CRLF)
_ArrayDisplay($aTable)
 
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
В представленном примере нет доступа к свойствам ячеек. И получить надо html страницу с помощью inetget, а уж потом представить в объектном виде.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Ну, во-первых, вы писали:

[list type=decimal]
[*]Собственно как средствами AutoIt получить доступ ячейкам произвольной таблицы?
[*]Как получить доступ к ячейку с текстом Ячейка 1, причем найти там определенный фрагмент?
[/list]

и уже потом вы написали:

можно получить доступ к ячейки как к объекту с определенными свойствами?

Из этого я сделал вывод, что вам нужно в первую очередь получить значение ячейки. Обратится к ней вам нужно, именно как к объекту документа, а не просто как к текстовому файлу, для поиска по маски.
Значить ошибся :smile:
Но получить свойства (атрибуты) <table>, <tr>, <td>, равно как и атрибуты любого HTML тега в объектной модели документа тоже не составляет труда.

Вот пример HTML документа.

Код:
<html>
<head>
<title>Test page</title>
</head>
<body>
<table width="300" border="1">
  <tr>
    <td nowrap id="1" bgcolor="#cccccc" width="100%" height="60">Ячейка 1</td>
    <td nowrap id="2" bgcolor="#fffdee" height="60">Ячейка 2</td>
    <td nowrap id="3" bgcolor="#ff0000" height="60">Ячейка 3</td>
  </tr>
</table>
</body>
</html>

Вот пример кода, получения свойств (атрибутов) <table> и ячейки <td> №1

Код:
#include <Constants.au3>
#include <IE.au3>
#include <Array.au3>

$oIE = _IECreate("html://",0,1,1,1)
; 0 – это индекс элемента в объектной модели
$oTABLE = _IETableGetCollection($oIE,0)
$oTR = _IETagNameGetCollection($oTABLE,"tr",0)
$oTD = _IETagNameGetCollection($oTR,"td",0)

ConsoleWrite("Атрибуты <table>, тоесть свойства таблицы" &@CRLF)
ConsoleWrite("width = "& $oTABLE.width &@CRLF & "border = "& $oTABLE.border &@CRLF)
ConsoleWrite("Атрибуты ячейки №1 <td>, тоесть свойства ячейки" &@CRLF)
ConsoleWrite("id = "& $oTD.id &@CRLF & "bgcolor = "& $oTD.bgcolor &@CRLF & "width = "& $oTD.width &@CRLF & "height = "& $oTD.height &@CRLF)


И получить надо HTML страницу с помощью InetGet, а уж потом представить в объектном виде.

P.S. Собственно вопрос:
А в чем смысл использования вами в данной ситуации InetGet?
 
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
Объект IE - больно глючный, утекание памяти наблюдается и еще много всякого + при загрузке в этот объект начинает выполняться куча всяких "плагинов по умолчанию", разные встроенные объекты хочет загрузить.. inetget просто грузит текст, и обрабатывая ссылки из текстового файла, можно картинки загрузить... Ну и все что надо, что убыстряет работу скрипта.

Кстати, никто не реализовывал функцию, создания списка тэгов, включая вложенные друг в друга?
Или хотя бы по тэгу img, чтобы на выходе был массив со свойствами объекта img
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Решил в этой теме опять про RegExp задать вопрос.
Помогите сделать паттерн.
Код:
В переменной может быть несколько
строк 
в переменную нужно брать только 1ю
Код:
$a=clipget()
$text=StringRegExpReplace($a,'(.*)\r','\1',1);Вроде должно быть что то типа того...
ConsoleWrite($text&'<<' & @LF)
 
Автор
vcomp71

vcomp71

Осваивающий
Сообщения
431
Репутация
25
IgRo сказал(а):
а если HTML рассмотреть как XML структуру и воспользоваться "XML DOM wrapper (COM)"
http://www.autoitscript.com/forum/index.php?showtopic=19848&st=0
А вот тут поподробней... В смысле как html структуру рассмотреть как xml?
 

Boolinteg

Новичок
Сообщения
3
Репутация
0
<TABLE border=0 cellSpacing=0 cellPadding=2 width="95%">
<TR>
<TD class=h1 colSpan=6>
...
</TD>
</TR>
</TABLE>
<TABLE border=0 cellSpacing=0 cellPadding=2 width="95%">
<TBODY>
<TR>
<TD class=h colSpan=6>


<B>Книга</B>


<IMG border=0 src="orange_dot.gif" width=100 height=1>
</TD>
</TR>
<TR>
<TD class=h width=70>ФИО</TD>
<TD class=h width=100>Тел.</TD>
<TD class=h width=100>Адрес</TD></TR>
</TBODY>
</TABLE>

<TABLE border=0 cellSpacing=0 cellPadding=2 width="95%">
<TR>
<TD class=ho colSpan=6>
...
</TD>
</TR>
</TABLE>
Подскажите как получить и обработать, выделеную красным, таблицу
 
Верх