Тема: AHK: "Вытащить" слово из текста
Доброго времени!
Я загружаю страницу через UrlDownloadToFile, и из текста который загрузился, нужно вытащить ключевые слова, подскажите, пожалуйста, как можно это реализовать?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Доброго времени!
Я загружаю страницу через UrlDownloadToFile, и из текста который загрузился, нужно вытащить ключевые слова, подскажите, пожалуйста, как можно это реализовать?
Обычно для таких целей используют регулярные выражения (RegExMatch, RegExReplace).
jbn238
А можно поинтересоваться, вы загружаете страницу целиком, чтобы потом проанилизировать на нужные элементы в коде?
Если так, то не проще использовать WinHttpRequest?
А что по-поводу вашего вопроса, то как и ответили выше, используйте RegExMatch или RegExReplace.
Еще могу посоветовать использовать сайт https://regex101.com/, он помогает визуально воспринимать то, какие регулярные выражения вы вводите и то, что из этого получается.
Clannad5
https://ru.dotabuff.com/heroes/puck
из этой страницы мне нужны слова "Disabler, Escape, Initiator, Nuker". Идея в том чтобы загрузить страницу целиком, а после просто вытащить эти слова если они есть, или просто ничего не делать если их нет.
Не думаю, что там регулярные выражения нужны. http://forum.script-coding.com/viewtopic.php?id=12373.
Вася_01
Просмотрел тему которую вы прикрепили, к сожалению, не выделил ничего для себя, чтобы могло мне помочь.
Не думаю, что там регулярные выражения нужны.
Буду признателен если поможете, как вы думаете лучше сделать?
А что там помогать, делаете запрос к сайту, и достаете эти значения через htmlfile так.
MsgBox % document.getElementsByClassName("header-content-title")[0].innerText
Вася_01
делаете запрос к сайту, и достаете эти значения через htmlfile так.
MsgBox % document.getElementsByClassName("header-content-title")[0].innerText
Это конечно замечательно, но к сожалению я только начинаю изучать эту сферу, можете, пожалуйста, если Вас не затруднит более детально объяснить?
Я же тему скинул, где объясняется, как получить это значение через htmlfile. Если будет выдавать ошибки гуглите ошибку.
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 указать все нужные тебе комбинации для поиска нужных слов в одну команду.
Вообще регулярки это очень интересная и полезная тема для изучения, поэтому почитай о ней на досуге.
Как правило регулярки схожи с другими языками программирования, что очень упрощает тебе поиск ответов на свои вопросы.
Clannad5
Ого).
Благодарен Вам. Думаю воспользуюсь вамим советом и посвящу некоторое время изучению регулярок.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться