Что нового

Как зайти на сайт и получить номер телефона ? (номер явно не указан)

vaf

Новичок
Сообщения
189
Репутация
2
Добрый день уважаемые форумчане. Есть проблема.

Имеется список URL вот такого вида:

auto.ru/cars/used/sale/1028796961-ac14dc/
auto.ru/cars/used/sale/1028796959-a97e/
auto.ru/cars/used/sale/1028796951-ec05/
auto.ru/cars/used/sale/1028796947-182ca1/

Нужно зайти и спарсить оттуда номер телефона и имя продавца. Все бы ничего, можно загнать все это в массив, загрузить HTML код и выдрать, но проблема в следующем - чтобы получить телефон, нужно нажать на кнопку "показать телефон".
Как это сделать не городя огород ?
 

uritalex

Новичок
Сообщения
197
Репутация
3
Кликнуть то не проблема :smile: :
Код:
#include "UIAutomate.au3"

Opt("WinTitleMatchMode", 2)

$hnd = WinWaitActive(" - Google Chrome", "", 60) ; Ждем 60 секунд
If Not $hnd Then Exit

$oParent = _UIA_GetElementFromHandle($hnd)
Sleep (1000)
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Новая вкладка")
_UIA_ElementMouseClick($oElement)
Sleep (1000)
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Адресная строка и строка поиска")
_UIA_ElementMouseClick($oElement)
Send("auto.ru/cars/used/sale/1028796961-ac14dc/{enter}")

$oElement =  _UIA_WaitControlTypeElement($oParent, "UIA_TextControlTypeId", "Показать телефон", Default, False, 0)
If IsObj($oElement) Then _UIA_ElementMouseClick($oElement)

Sleep (1000)

Send ('{ESC}')
Sleep (1000)


Но вот выдернуть сами данные пока не могу :(
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
uritalex
выдернуть сами данные
Код:
$oElement =  _UIA_WaitControlTypeElement($oParent, "UIA_TextControlTypeId", "Показать телефон", Default, False, 0)
If IsObj($oElement) Then _UIA_ElementMouseClick($oElement)

$oButton = _UIA_WaitControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Всё хорошо ")
$oName = _UIA_ElementGetFirstLastChild(_UIA_ElementGetParent(_UIA_ElementGetParent($oButton)))[0]
$sName = _UIA_ElementGetPropertyValue($oName, "Name")
ConsoleWrite($sName & @CRLF)

$aData = _UIA_FindAllElements(_UIA_ElementGetPreviousNext($oName)[1])
For $i = 1 To $aData[0]
  ConsoleWrite(_UIA_ElementGetPropertyValue($aData[$i], "Name") & @CRLF)
Next
 
Автор
V

vaf

Новичок
Сообщения
189
Репутация
2
У меня не работает. просто ничего не происходит


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

Заработало. 42 строки кода чтобы получить телефон, ну да ладно, для себя же.
P.S. Рано радовался, работает он через раз почему то
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
vaf
через раз почему то
Потому что, когда появляется текст "Показать телефон", страница ещё полностью не загружена. Возможно и скрипт ещё не загружен, поэтому клик не отрабатывает. Для решения проблемы нужно либо перед кликом установить паузу на пару секунд, либо дождаться загрузки страницы по наличию какого-нибудь текста в самом её низу
Код:
_UIA_WaitControlTypeElement($oParent, "UIA_TextControlTypeId", "Пользовательское соглашение", Default, False, 0)
$oElement = _UIA_WaitControlTypeElement($oParent, "UIA_TextControlTypeId", "Показать телефон")
If IsObj($oElement) Then _UIA_ElementMouseClick($oElement)
 
Верх