Что нового

[Сеть, интернет] Получить текст элемента (Яндекс Карты)

ini

Новичок
Сообщения
55
Репутация
0
Здравствуйте, пытаюсь получить текст элемента
Код:
<div class="metro-stations-view__station">какой то текст</div>
никак не могу понять, как до него добраться. Нужно это для определения ближайшей станции метро на яндекс картах. Помогите пожалуйста решить вопрос, если есть возможность сделать это без браузера, подскажите как?
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Пытаюсь взять текст элемента, но почему то получается пустое значение
Код:
$oMerto = String($oIE.document.querySelector('metro-stations-view__station').innerText)
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Писал с точкой, с div., все равно переменная пустая
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Сколько элементов с этим классом на странице?
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
если не точное совпадение то есть еще несколько:
Код:
metro-stations-view
Код:
metro-stations-view__station-icon
Код:
metro-stations-view__station
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Вот код, не понимаю почему, но в консоль ничего не записывается:
Код:
#include <IE.au3>
$oIE = _IECreate("maps.yandex.ru")
_IELoadWait($oIE)
$oForm = _IEFormGetCollection($oIE, 0)
$oQuery = _IEFormElementGetCollection($oForm, 0)
_IEFormElementSetValue($oQuery, "Москва Расплетина 10")
_IEFormSubmit($oForm)
_IELoadWait($oIE)
$oMerto = $oIE.document.querySelector('.metro-stations-view__station').innerText
ConsoleWrite($oMerto)
_IEQuit($oIE)

Из консоли:
Код:
>"C:\Program Files\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\user\Desktop\YaMap.au3" /UserParams    
+>15:25:12 Starting AutoIt3Wrapper v.15.729.1555.1 SciTE v.3.5.4.0   Keyboard:00000409  OS:WIN_7/Service Pack 1  CPU:X64 OS:X86    Environment(Language:0419)
+>         SciTEDir => C:\Program Files\AutoIt3\SciTE   UserDir => C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper
>Running AU3Check (3.3.14.1)  from:C:\Program Files\AutoIt3  input:C:\Users\user\Desktop\YaMap.au3
+>15:25:12 AU3Check ended.rc:0
>Running:(3.3.14.1):C:\Program Files\AutoIt3\autoit3.exe "C:\Users\user\Desktop\YaMap.au3"    
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
+>15:25:14 AutoIt3.exe ended.rc:0
+>15:25:14 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 2.29
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Это "фишка" ie на некоторых сайтах. Что бы показать определенный контент он уничтожает старый объект, при этом вызывается событие OnQuit, и создает новый. Для пользователя это не заметно. А для скрипта - катастрофа.

Тут после поиска адреса происходит такая ерунда. Как бороться не понятно.
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Странно, если сразу открыть страницу с адресом, причем писать надо по русски на EN раскладке, иначе квакозябры и потом аттачить окно, то всё работает :scratch:
Код:
#include <IE.au3>
$oIE = _IECreate("https://yandex.ru/maps/213/moscow/?text=chtntyrf 17")
_IELoadWait($oIE)
Sleep(1000)
$oIE = _IEAttach("Карта Москвы: улицы, дома, организации — Яндекс.Карты")
Sleep(100)
$oMerto = $oIE.document.querySelector('.metro-stations-view__station').innerText
Sleep(100)
ConsoleWrite($oMerto)


Код:
>Running:(3.3.14.1):C:\Program Files\AutoIt3\autoit3.exe 
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
Сухаревская — 300 м+>16:30:39 AutoIt3.exe ended.rc:0
+>16:30:39 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 3.107



Причем если первый раз открыть страницу уже с адресом, то в дальнейшем, при смене адреса метро спокойно ищется... Принципе, можно с таким костылем реализовать мою задачу, inververs спасибо за потраченное время :smile:



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

inververs сказал(а):
... и создает новый....
А можно как то отловить этот новый объект?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Всё гораздо проще.
Код:
#include <IE.au3>

$iExit = 1
$oMerto = ""

$oIE = _IECreate("https://yandex.ru/maps/213/moscow/?text=chtntyrf 17")
$oIEEvent = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents")

While $iExit
   Sleep(250)
WEnd

MsgBox(0, "Metro Station:", $oMerto)

Func _IEEvent_NavigateComplete()
   $oMerto = $oIE.document.querySelector('.metro-stations-view__station').innerText
   $iExit = 0
EndFunc ;==>_IEEvent_NavigateComplete
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Все равно без загрузки страницы с адресом не работает
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Если убрать 213/moscow/?text=chtntyrf 17", не показывает. Думаю тема решена, спасибо за вариант, но свой код он ближе:smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
ini [?]
Если убрать 213/moscow/?text=chtntyrf 17", не показывает
По-вашему, элемент с классом .metro-stations-view__station должен быть? :smile:
Код:
#include <IE.au3>

$iExit = 1
$oMerto = ""

$oIE = _IECreate("https://yandex.ru/maps")
$oIEEvent = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents")

While $iExit
   Sleep(250)
WEnd

MsgBox(0, ":)",  _
		 StringFormat("Count tags for class:\n\t.metro-stations-view__station - %d", $oMerto))

Func _IEEvent_NavigateComplete()
   $oMerto = $oIE.document.querySelectorAll('.metro-stations-view__station').length
   $iExit = 0
EndFunc ;==>_IEEvent_NavigateComplete

свой код он ближе
Хозяин - барин.
 
Автор
I

ini

Новичок
Сообщения
55
Репутация
0
Просто в вашем коде не понимаю как прикрутить ввод адреса из переменной, добавляю операции с строкой адреса, скрипт залипает на цикле
 
Верх