Что нового

[Сеть, интернет] Таблица с вкладками из HTML

tehnik

Новичок
Сообщения
9
Репутация
0
Добрый день! Помогите, пожалуйста, достать таблицу из html-страницы. Написал такой код, но сохраняется только первая вкладка. Как достать остальные две?

Код:
#include <IE.au3>

$oIE = _IECreate("http://rossoshansky.vrn.sudrf.ru/modules.php?name=sud_delo&srv_num=2&op=cs&case_id=8222402&delo_id=1540005&case_type=50520001",0,0,1,-1)

_IECopyObjById($oIE, "tablcont") 
If Not @error Then
	MsgBox(0,"", "Выполнено")
EndIf


Func _IECopyObjById(ByRef $o_Object, $s_ID)
    Local $oCtlRange
    If IsObj($o_Object.document.getElementById($s_ID)) Then
        $oCtlRange = $o_Object.document.body.createControlRange()
		$oCtlRange.add($o_Object.document.getElementById($s_ID))
		$oCtlRange.execCommand('Copy')
		
        Return SetError(0)
    Else
        Return SetError(1)
    EndIf
EndFunc

Заранее спасибо!
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Код:
#include <IE.au3>

$oIE = _IECreate("http://rossoshansky.vrn.sudrf.ru/modules.php?name=sud_delo&srv_num=2&op=cs&case_id=8222402&delo_id=1540005&case_type=50520001",0,0,1,-1)

_IECopyObjById($oIE, 1)
If Not @error Then
    MsgBox(0,"", "Выполнено")
EndIf
_IECopyObjById($oIE, 2)
If Not @error Then
    MsgBox(0,"", "Выполнено")
EndIf
_IECopyObjById($oIE, 3)
If Not @error Then
    MsgBox(0,"", "Выполнено")
EndIf


Func _IECopyObjById(ByRef $o_Object, $i_Order)
    Local $oCtlRange
    If IsObj($o_Object.document.getElementById("cont"&$i_Order)) Then
        If IsObj($o_Object.document.getElementById("cont"&$i_Order).getElementsByTagName("table")) Then
			For $o_Table In $o_Object.document.getElementById("cont"&$i_Order).getElementsByTagName("table")
				$oCtlRange = $o_Object.document.body.createControlRange()
				$oCtlRange.add($o_Table)
				$oCtlRange.execCommand('Copy')
				ExitLoop
			Next
            Return SetError(0)
        Else
            Return SetError(2)
       EndIf
    Else
        Return SetError(1)
    EndIf
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
tehnik,
Мой вариант:
Код:
#include <IE.au3>
#include <Array.au3>
;!!!!проверял только на IE8!!!
$sUrl = 'http://rossoshansky.vrn.sudrf.ru/modules.php?name=sud_delo&srv_num=2&op=cs&case_id=8222402&delo_id=1540005&case_type=50520001'

$oIE = _IECreate($sUrl)
If @error Then
	MsgBox(16, 'Error', '_IECreate')
	Exit
EndIf
$oLIs = _IETagNameGetCollection($oIE, 'li')
If Not @error Then
	$iExt = @extended
	If $iExt Then
		Dim $aTabSheets[$iExt + 1][3]
		For $i = 1 To $iExt
			$aTabSheets[$i][0] = _IEGetObjById($oIE, 'cont' & $i)
			If @error Then ContinueLoop
			$aTabSheets[$i][1] = _IETagNameGetCollection($aTabSheets[$i][0], 'table', 0)
			If @error Then ContinueLoop
			;или:
			$aTabSheets[$i][2] = _IETableWriteToArray($aTabSheets[$i][1])
			;или:
			;$aTabSheets[$i][2] = _IEPropertyGet($aTabSheets[$i][1], 'innertext')
		Next
		For $i = 1 To $iExt
			;или:
			If IsArray($aTabSheets[$i][2]) Then
				_ArrayDisplay($aTabSheets[$i][2], $i & ' (' & $iExt & ')')
			EndIf
			;или:
			;MsgBox(64, $i & ' (' & $iExt & ')', $aTabSheets[$i][2])
		Next
		;_IEQuit($oIE)
	EndIf
Else
	MsgBox(16, 'Error', '_IETagNameGetCollection')
	_IEQuit($oIE)
	Exit
EndIf
 
Автор
T

tehnik

Новичок
Сообщения
9
Репутация
0
Напишу здесь, чтобы не начинать новую тему. Спасибо всем за помощь - все работало, пока не появился случай с необходимостью сохранять эти таблицы в один файл.
Делаю так
Код:
$o_DocTemp = ObjCreate("Word.Application")										
$oDoc = _WordDocOpen($o_DocTemp, "C:\test.doc")
$oDoc.Range.Paste
_WordDocSave($oDoc)
_WordDocClose($oDoc)
_WordQuit($o_DocTemp)

При повторном вызове этого кода, содержимое C:\test.doc меняется и перезаписывается последней таблицей. На форумах пишут, что надо сдвинуть курсор, пробовал с MoveEnd и EndKey - не помогло.
Как можно сохранить все таблицы?
 
Верх