1 (изменено: stenseq, 2015-11-15 17:53:58)

Тема: AHK: Найти значение в строке и скопировать следующую

Здравствуйте.
Пожалуйста, помогите составить скрипт, он можно сказать на половину сделан.

В переменную копируется определенный текст с сайта.
Из этого текста убираются пустые строки.
Далее скрипт находит строку с нужным значением, и должен скопировать строку под этой строкой.
Например, вот текст, из которого скрипт уже убрал пустые строки:

должность:
учитель
школа:
15
директор:
гусев

В этом тексте, нужно найти строку с значением "должность:" и скопировать строку под ней т.е. строку с значением например "учитель".

сейчас это все выглядит вот так.  Данный скрипт просто уибрает пустые строки.


тут был код открытия страницы в ie
qwe := 0
qwe := ie.document.getElementsByTagName("DIV")[28].InnerText
MsgBox, 0, , %qwe%
qwe := RegExReplace(qwe, "\R+", "`n")
MsgBox, 0, , %qwe%

Loop, read, qwe
{
IfInString  что тут писать не пойму
}

2

Re: AHK: Найти значение в строке и скопировать следующую

У меня получилось, найти значение в нужно строке.
Затем прибавить к номеру этой строки единицу(чтобы перейти на след.строку.
Теперь не пойму как по номеру определенной строки забрать данные.

qwe1 := "Должность"

Loop, parse, qwe, `n
{
 IfInString, A_LoopField, %qwe1%
 {
  Clipboard := %A_Index%
  qweqwe := A_Index+1
  
 }
}

3

Re: AHK: Найти значение в строке и скопировать следующую

html := UrlDownloadToVar("http://forum.script-coding.com/viewtopic.php?id=11080") ; эта тема на сером форуме.

RegExMatch(html,"mU)"

 . "должность:`n(.+)`n"
 . "школа:`n(.+)`n"
 . "директор:`n(.+)<"
 
 ,text)
 

msgbox % text1 "`n" text2 "`n" text3


UrlDownloadToVar(URL, UserAgent = "", ProxyServer = "", UserName = 0, Password = "")
{
   WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
   ProxyServer ? WebRequest.SetProxy(HTTPREQUEST_PROXYSETTING_PROXY := 2, ProxyServer)
   WebRequest.Open("GET", Url)
   ProxyServer ? WebRequest.SetCredentials(UserName, Password, HTTPREQUEST_SETCREDENTIALS_FOR_PROXY := 1)
   UserAgent ? WebRequest.Option(WinHttpRequestOption_UserAgentString := 0) := UserAgent
   WebRequest.Send()
   Return WebRequest.ResponseText
}

4

Re: AHK: Найти значение в строке и скопировать следующую

Большое спасибо, что потратили время на меня.
Но вот Ваш вариант, не подходит.

Выдаёт пустой msgbox

С сайта там идут кукисы замудренные, и нужно быть залогенным, поэтому вариант просто "брать с сайта" не подходит.
Именно поэтому я использовал IE.
И решил попробовать подставить вместо "html" свою переменную "qwe"


получился такой исходник:


If !IsObject(ie)
	ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate("https://сайт/user/123")
While !(ie.busy)
	Sleep, 100
While (ie.busy)
	Sleep, 100
While !(ie.document.Readystate = "Complete")
	Sleep, 100
qwe := 0
qwe := ie.document.getElementsByTagName("DIV")[28].InnerText
;MsgBox, 0, , %qwe%
qwe := RegExReplace(qwe, "\R+", "`n")
MsgBox, 0, , %qwe%

RegExMatch(qwe,"mU)"

 . "Квалификация:`n(.+)`n"
 . "Стаж:`n(.+)`n"
 . "Личная почта пользователя:`n(.+)<"
 
 ,text)
 
msgbox % text1 "`n" text2 "`n" text3

Clipboard := qwe


содержание qwe

Должность:
Директор
Любимые предметы:
Экономика
Физика
Химия
Иностранный язык
Квалификация:
I квалификационная категория
Стаж:
3 года
Личная почта пользователя:
ya@ya.ru