Что нового

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

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
Репутация
965
Med1c
Предположим мы сравнили данные из Potential profit и...
По каким условиям делать выборку из ячеек From, To, Type?


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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,321
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,321
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


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