Что нового

[html] Поиск внутри определенного объекта

systel

Новичок
Сообщения
26
Репутация
1
Использую стандартный поиск:
Код:
$oinnertexts = _IETagNameGetCollection($oIE, $intagname)
   For $oinnertext In $oinnertexts
	  If $oinnertext.classname == $inclassname Then
		 $innertext = $oinnertext.innertext
	  EndIf
   Next


Но сейчас столкнулся с такой проблемой, что таких данных с таким $intagname и $inclassname, много в html коде, и все они содержатся в разных Span'ax.
Как мне сначала найти определенный <span> (т.е. объект) , а потом уже только в нем искать используя выше написанный код.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
systel, для таких вопросов есть специальный раздел - "Автоматизация IE и Web-интерфейса"


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

systel [?]
Как мне сначала найти определенный <span>
Можно по атрибуту ID (если таковой имеется) или по индексу элемента в DOM (Document Object Model)
 
Автор
S

systel

Новичок
Сообщения
26
Репутация
1
Проблема в том что не имеется, вот пример html кода:

Код:
<span class="user1">
   <span class="fname">Иван</span>
   <span class="sname">Иванов</span>
</span>

<span class="user2">
   <span class="fname">Петр</span>
   <span class="sname">Сергеевич</span>
</span>

<span class="user3">
   <span class="fname">Дмитрий</span>
   <span class="sname">Львович</span>
</span>

И вот например мне нужно вытащить именно: Сергеевич
Т.е. тока фамилию.
Поэтому я и думал что может можно как-нибудь сначала найти user2 и все элементы внутри него, а потом в нем найти уже sname
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
systel [?]
И вот например мне нужно вытащить именно: Сергеевич
Код:
#include <IE.au3>
Dim $sResult
$sUrl = @ScriptDir & '\1.html'
$oIE = _IECreate($sUrl)
$oElements = _IETagNameGetCollection($oIE, 'span')
For $oElement In $oElements
	If $oElement.className == 'user2' Then
		$oElement = _IETagNameGetCollection($oElement, 'span', 1)
		ConsoleWrite(_IEPropertyGet($oElement, 'innertext'))
		ExitLoop
	EndIf
Next
 

Kreol2013

Новичок
Сообщения
9
Репутация
0
Честное слово не знаю куда писать. И чтоб не плодить тем.
Есть у меня 10 сайтов с которых надо спарсить цены.
Пишу так
Код:
#include <IE.au3>
#Include <INet.au3> ;Подключаем библиотеку
$sLogin = 'domnnn.com'
$sUrl = 'https://secure.fatcow.com/register/registration.bml?masters=445&promos=dir_intr18_24&flowid=12&cid=951'

$oIE = _IECreate($sUrl)
$oLogin = _IEGetObjById($oIE, 'dom_lookup')
$oButton = _IEGetObjById($oIE, 'button')

_IEFormElementSetValue($oLogin, $sLogin)
_IEAction($oButton, 'click')
_IELoadWait($oIE)
sleep(4000)
; дальше пытался раскрутить код из этого примера, но...
$oElements = _IETagNameGetCollection($oIE, 'feature-row')
For $oElement In $oElements
    If $oElement.value == '73291' Then
        ;ConsoleWrite(_IEPropertyGet($oElement, 'innertext'))
        ExitLoop
    EndIf
Next
MsgBox(0,"",$oElement.value)

html страница имеет такой вид.
[box title=TitleBox]<div class="displaybox reg-box registration-purchase-information registration-box">
<h2>Purchase Information</h2>
<input type="hidden" id="hostingprice" value="88.00">
<input type="hidden" id="hostingofferid" value="73291">
<table width="660">

<tr class="feature-row">
<td align="right"><label for="changefrequency_3"><b>The FatCow Plan:</b></label></td>
<td align="left" id="freqDrop">
<select name="changefrequency_3" id="changefrequency_3" class="norm" onchange="updatesetup(this)"><option value="73290">$4.67 per month (billed $56.04 for 12 months)</option>
<option value="73291" selected>$3.67 per month (billed $88.00 for 24 months)</option>
<option value="73292">$3.67 per month (billed $132.00 for 36 months)</option></select> </td>
</tr>
<tr class="feature-row">
<td align="right">
<label><b>Instant Activation:</b></label>
</td>
<td align="left">
INCLUDED FREE!
</td>
</tr>
[/box]
class="feature-row" здесь 6 штук. Наш 1-й.
Нужно из всего этого получить строку
Код:
<option value="73291" selected>$3.67 per month (billed $88.00 for 24 months)</option>
которая будет selected, ну а в результате затолкать в файл 3.67
Буду очень признателен за быстрый ответ
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Kreol2013 эта тема решена

И чтоб не плодить тем.
Это не наказуемо, а наоборот приветствуется. Одна задача, одно/несколько решений.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Kreol2013 [?]
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.




чтоб не плодить тем
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Модератор.
 
Верх