1

Тема: AHK: Получение текста с ссылки в фоновом режиме.

Здравствуйте. Нужно получать текст с разных ссылок.
Вот часть кода элемента с сайта:


...
<div class="price-block">
<span>167</span>
...

Для меня известен только один способ получения текста с ссылок. В данный момент мне нужно получить число 167.

Я делаю это следующим образом:


ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := false
ie.Navigate("ссылка на этот сайт")
while ie.readystate <> 4 
{
continue 
}
Text := ie.document.getElementsByClassName("price-block")[0].innerText

Меня бы устроил и этот вариант, но нужно проверить много ссылок, а этот метод медлителен. Существует ли какой-нибудь другой способ получить текст по классу,id, и т.д. элемента?

2

Re: AHK: Получение текста с ссылки в фоновом режиме.

Читайте здесь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Получение текста с ссылки в фоновом режиме.

teadrinker
Вы не поняли, там описан метод через Explorer, а меня интересует, если ли какой-нибудь другой.
Спасибо за ссылку, нашёл кое-что новое для себя.

4

Re: AHK: Получение текста с ссылки в фоновом режиме.

Например, нужно получить количество пользователей с главной страницы этого сайта:

https://i.imgur.com/BL42U2w.png

html:

https://i.imgur.com/rIMnt3v.png

url := "http://forum.script-coding.com/index.php"

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", url, false)
whr.Send()
html := whr.ResponseText

doc := ComObjCreate("htmlfile")
doc.write("<meta http-equiv=""X-UA-Compatible"" content=""IE=9"">")
doc.write(html)

elem := doc.querySelector(".st-users > span > strong")
MsgBox, % elem.innerText
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Получение текста с ссылки в фоновом режиме.

teadrinker
Спасибо! Это гораздо быстрее.

6

Re: AHK: Получение текста с ссылки в фоновом режиме.

Иногда можно применить RegEx вместо htmlfile:

url := "http://forum.script-coding.com/index.php"

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", url, false)
whr.Send()
html := whr.ResponseText

RegExMatch(html, "Пользователей:\s*<strong>\K[^<]+", users)
MsgBox, % users
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Получение текста с ссылки в фоновом режиме.

Или так:

RegExMatch(html, "Пользователей:.*?\K[\d,]+", users)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Получение текста с ссылки в фоновом режиме.

teadrinker
А у вас не найдётся источника где можно подробнее изучить этот способ работы с ссылками? Буду очень благодарен.

9

Re: AHK: Получение текста с ссылки в фоновом режиме.

Не совсем понял вопрос. Какой именно «этот»?
WinHttpRequest object
Если про htmlfile, то тут немного сложнее: IHTMLDocument2 interface, для начала лучше смотреть примеры применения на нашем или на официальном форумах.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Получение текста с ссылки в фоновом режиме.

teadrinker
Огромное спасибо.