1 (изменено: jbn238, 2022-09-15 17:45:58)

Тема: AHK: "Вытащить" слово из текста

Доброго времени!
Я загружаю страницу через UrlDownloadToFile, и из текста который загрузился, нужно вытащить ключевые слова, подскажите, пожалуйста, как можно это реализовать?

2

Re: AHK: "Вытащить" слово из текста

Обычно для таких целей используют регулярные выражения (RegExMatch, RegExReplace).

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

3 (изменено: Clannad5, 2022-09-15 18:12:38)

Re: AHK: "Вытащить" слово из текста

jbn238
А можно поинтересоваться, вы загружаете страницу целиком, чтобы потом проанилизировать на нужные элементы в коде?
Если так, то не проще использовать WinHttpRequest?
А что по-поводу вашего вопроса, то как и ответили выше, используйте RegExMatch или RegExReplace.

Еще могу посоветовать использовать сайт https://regex101.com/, он помогает визуально воспринимать то, какие регулярные выражения вы вводите и то, что из этого получается.

4

Re: AHK: "Вытащить" слово из текста

Clannad5
https://ru.dotabuff.com/heroes/puck
из этой страницы мне нужны слова "Disabler, Escape, Initiator, Nuker". Идея в том чтобы загрузить страницу целиком, а после просто вытащить эти слова если они есть, или просто ничего не делать если их нет.

5 (изменено: Вася_01, 2022-09-15 19:15:06)

Re: AHK: "Вытащить" слово из текста

Не думаю, что там регулярные выражения нужны. http://forum.script-coding.com/viewtopic.php?id=12373.

6

Re: AHK: "Вытащить" слово из текста

Вася_01
Просмотрел тему которую вы прикрепили, к сожалению, не выделил ничего для себя, чтобы могло мне помочь.

Не думаю, что там регулярные выражения нужны.

Буду признателен если поможете, как вы думаете лучше сделать?

7 (изменено: Вася_01, 2022-09-15 19:50:07)

Re: AHK: "Вытащить" слово из текста

А что там помогать, делаете запрос к сайту, и достаете эти значения через htmlfile так.

MsgBox % document.getElementsByClassName("header-content-title")[0].innerText

8

Re: AHK: "Вытащить" слово из текста

Вася_01

делаете запрос к сайту, и достаете эти значения через htmlfile так.

MsgBox % document.getElementsByClassName("header-content-title")[0].innerText

Это конечно замечательно, но к сожалению я только начинаю изучать эту сферу, можете, пожалуйста, если Вас не затруднит более детально объяснить?

9 (изменено: Вася_01, 2022-09-15 20:01:38)

Re: AHK: "Вытащить" слово из текста

Я же тему скинул, где объясняется, как получить это значение через htmlfile. Если будет выдавать ошибки гуглите ошибку.

10 (изменено: Clannad5, 2022-09-16 00:04:43)

Re: AHK: "Вытащить" слово из текста

jbn238

Вот как пример упрощенного поиска:


; вызов функции, с сылкой внутри (можно указать переменную)
UrlCheck("https://ru.dotabuff.com/heroes/puck")

; Сама функция
UrlCheck(link)    {
oWhr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oWhr.Open("GET", link, false)
oWhr.Send()
; RegExMatch - метод | oWhr.ResponseText - код страницы полученный по ссылке | SubPat - переменная, куда будет сохраняться полученный результат
PosText := RegExMatch(oWhr.ResponseText, "Escape", SubPat)
; Выводим результат.
Msgbox, % "На позиции " PosText "`nНайдено слово " SubPat
}

Минусы такого подхода в том, что оболочка, что используется для команд, может быть устаревшей и будет выводиться совсем другая информация.
Для примера попробуй открыть vk.com и ты получишь сообщение о том, что браузер устарел(если конечно ничего с того раза не поменялось).

Лучше, конечно же, в RegExMatch указать все нужные тебе комбинации для поиска нужных слов в одну команду.
Вообще регулярки это очень интересная и полезная тема для изучения, поэтому почитай о ней на досуге.
Как правило регулярки схожи с другими языками программирования, что очень упрощает тебе поиск ответов на свои вопросы.

11

Re: AHK: "Вытащить" слово из текста

Clannad5
Ого).
Благодарен Вам. Думаю воспользуюсь вамим советом и посвящу некоторое время изучению регулярок.