Что нового

[Сеть, интернет] Анализ таблицы и извлечение блока данных по результатам анализа.

Med1c

Новичок
Сообщения
10
Репутация
0
Добрый день, у меня возникла такая проблема:
Имеется таблица:
Код:
<hr />
<table border=0 width=90%>

<tr>
  <td><b>From:</b> Hroduko V - Moon 4 - Republic University</td>
  <td><b>To:</b> Jita IV - Moon 4 - Caldari Navy Assembly Plant </td>
  <td><b>Jumps:</b> 28</td>
</tr>
<tr>
  <td><b>Type:</b> <a href="quicklook.html?typeid=498">1400mm Howitzer Artillery I</a></td>
  <td><b>Selling:</b> 1,600,000.00 ISK</td>
  <td><b>Buying:</b> 1,721,111.31 ISK</td>
</tr>

<tr>
  <td><b>Per-unit profit:</b> 121111.31 ISK</td>
  <td><b>Units tradeable:</b> 60 (60 -&gt; 982)</td>
  <td> </td>
</tr>
<tr>
  <td><b><i>Potential profit</i></b>: 7,266,678.60 ISK </td>
  <td><b><i>Profit per trip:</i></b>: 7,266,678.60 ISK</td>
  <td><b><i>Profit per jump</i></b>: 250,575.12</td>
</tr>
<tr><td> </td></tr>


<tr>
  <td><b>From:</b> Hroduko V - Moon 4 - Republic University</td>
  <td><b>To:</b> Jita IV - Moon 4 - Caldari Navy Assembly Plant </td>
  <td><b>Jumps:</b> 28</td>
</tr>
<tr>
  <td><b>Type:</b> <a href="quicklook.html?typeid=498">1400mm Howitzer Artillery I</a></td>
  <td><b>Selling:</b> 1,600,000.00 ISK</td>
  <td><b>Buying:</b> 1,721,000.00 ISK</td>
</tr>

<tr>
  <td><b>Per-unit profit:</b> 121000.0 ISK</td>
  <td><b>Units tradeable:</b> 60 (60 -&gt; 257)</td>
  <td> </td>
</tr>
<tr>
  <td><b><i>Potential profit</i></b>: 7,260,000.00 ISK </td>
  <td><b><i>Profit per trip:</i></b>: 7,260,000.00 ISK</td>
  <td><b><i>Profit per jump</i></b>: 250,344.82</td>
</tr>
<tr><td> </td></tr>

</table>
Мне нужно вытащить цифру из поля "Potential profit" и сравнить ее с другими такими же цифрами, а после сравнения вытащить блоки "From", "To", "Type" и поместить их в отдельный файл или каким-либо другим образом вывести.

С чего посоветуете начать и в какую сторону смотреть?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Med1c
Предположим мы сравнили данные из Potential profit и...
По каким условиям делать выборку из ячеек From, To, Type?


Med1c [?]
С чего посоветуете начать и в какую сторону смотреть?
С изучения справки по IE.au3
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Med1c,
Если я Вас правильно понял, в чем я не уверен, то попробуйте примерно так.
Код:
#include <IE.au3>
#include <Array.au3>

;~ Без проверок на ошибки!
Local $i_Ind = 0, $aData[4], $vData, $iMax
$oIE = _IECreate(@ScriptDir & '\1.html')
$oTable = _IETableGetCollection($oIE, 0)

$oTRs = _IETagNameGetCollection($oTable, 'tr')
For $oTR In $oTRs
	If StringInStr(_IEPropertyGet($oTR, 'innertext'), 'potential profit') Then
		$oTDs = _IETagNameGetCollection($oTR, 'td')
		For $oTD In $oTDs
			$vData = _IEPropertyGet($oTD, 'innertext')
			If StringInStr($vData, 'potential profit') Then
				$vData = Number(StringRegExpReplace($vData, '[^\d\.]', ''))
				If $iMax < $vData Then
					$iMax = $vData
					$aData[0] = $i_Ind
				EndIf
			EndIf
		Next
	EndIf
	$i_Ind += 1
Next
If Not $iMax Then Exit 13
$oTR = _IETagNameGetCollection($oTable, 'tr', $aData[0] - 3)
For $i = 0 To 1
	$oTD = _IETagNameGetCollection($oTR, 'td', $i)
;~ 	$aData[$i + 1] = _IEPropertyGet($oTD, 'innertext')
	$aData[$i + 1] = StringRegExpReplace(_IEPropertyGet($oTD, 'innertext'), '^.*:\h*', '')
Next
$oTR = _IETagNameGetCollection($oTable, 'tr', $aData[0] - 2)
$oTD = _IETagNameGetCollection($oTR, 'td', 0)
;~ $aData[3] = _IEPropertyGet($oTD, 'innertext')
$aData[3] = StringRegExpReplace(_IEPropertyGet($oTD, 'innertext'), '^.*:\h*', '')
$aData[0] = $iMax
_ArrayDisplay($aData)
 
Автор
M

Med1c

Новичок
Сообщения
10
Репутация
0
Garrett
Выборку из этих полей делать, если значение в поле Potential profit ,больше других.

madmasles
Вы абсолютно правильно меня поняли, благодарю за предложенный код, он прекрасно работает. Единственное, что надо чтобы он выбирал 5 больших значений, но я думаю я сам с этим справлюсь.

У меня возник еще один вопрос: Можно ли средствами AutoIt перебрать n-ое количество таких страниц и из каждой выцепить нужные значения?
Вот пример страницы с которых я собираюсь забирать информацию:
http://eve-central.com/home/tradefind_display.html?set=1&fromt=10000002&to=10000033&qtype=Regions&age=24&minprofit=100000&size=10000&limit=50&sort=jprofit
Жирным выделены значения кодирующие определенные регионы. Сами регионы можно выбрать радиокнопкой на этой странице http://eve-central.com/tradetool/.
Самое проблемное, что эти регионы идут не по порядку, но если я буду знать номер каждого, можно ли перебрать все возможные комбинации между ними?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Med1c [?]
У меня возник еще один вопрос
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.
 
Автор
M

Med1c

Новичок
Сообщения
10
Репутация
0
Вопрос по коду, который предоставил madmasles:
Я дописал перебор страниц, и запись полученных результатов в файл, но при некоторых вариантах вместо значений ячеек From, To, Type выдает "0".
Вот мой код:
Код:
#include <IE.au3>
#include <Array.au3>
$file = FileOpen("test.txt", 1)
Global $Regs[4] = [10000064, 10000067, 10000033, 10000002]
Dim $R1=-1
Dim $R2=-1
Global $first='http://eve-central.com/home/tradefind_display.html?set=1&fromt='
Global $second='&to='
Global $third='&qtype=Regions&age=24&minprofit=100000&size=10000&limit=50&sort=jprofit'
$sch=0
$sch1=0

For $sch=0 to 3 Step 1
$R1=$R1+1
$R2=-1
For $sch1=0 to 3 Step 1

$R2=$R2+1
$link=$first&$Regs[$R1]&$second&$Regs[$R2]&$third



;~ Без проверок на ошибки!
Local $i_Ind = 0, $aData[4], $vData, $iMax
$oIE = _IECreate($link,0,0,1,0)
$oTable = _IETableGetCollection($oIE, 0)

$oTRs = _IETagNameGetCollection($oTable, 'tr')
For $oTR In $oTRs
    If StringInStr(_IEPropertyGet($oTR, 'innertext'), 'potential profit') Then
        $oTDs = _IETagNameGetCollection($oTR, 'td')
        For $oTD In $oTDs
            $vData = _IEPropertyGet($oTD, 'innertext')
            If StringInStr($vData, 'potential profit') Then
                $vData = Number(StringRegExpReplace($vData, '[^\d\.]', ''))
                If $iMax < $vData Then
                    $iMax = $vData
                    $aData[0] = $i_Ind
                EndIf
            EndIf
        Next
    EndIf
    $i_Ind += 1
Next
If Not $iMax Then Exit 13
$oTR = _IETagNameGetCollection($oTable, 'tr', $aData[0] - 3)
For $i = 0 To 1
    $oTD = _IETagNameGetCollection($oTR, 'td', $i)
;~  $aData[$i + 1] = _IEPropertyGet($oTD, 'innertext')
    $aData[$i + 1] = StringRegExpReplace(_IEPropertyGet($oTD, 'innertext'), '^.*:\h*', '')
Next
$oTR = _IETagNameGetCollection($oTable, 'tr', $aData[0] - 2)
$oTD = _IETagNameGetCollection($oTR, 'td', 0)
;~ $aData[3] = _IEPropertyGet($oTD, 'innertext')
$aData[3] = StringRegExpReplace(_IEPropertyGet($oTD, 'innertext'), '^.*:\h*', '')
$aData[0] = $iMax
FileWrite($file, $aData[0]&@CRLF&$aData[1]&@CRLF&$aData[2]&@CRLF&$aData[3]&@CRLF&@CRLF)
;~ _ArrayDisplay($aData)

Next
Next


В чем загвоздка?
 
Верх