Autohotkey 循环遍历元素并获取属性值

Autohotkey 循环遍历元素并获取属性值,autohotkey,Autohotkey,我有一个包含以下URL的csv(List.csv)文件: http://www.indeed.com/resumes?q=banking&l=london&co=GB&start=0 http://www.indeed.com/resumes?q=banking&l=london&co=GB&start=50 http://www.indeed.com/resumes?q=banking&l=london&co=GB&sta

我有一个包含以下URL的csv(List.csv)文件:

http://www.indeed.com/resumes?q=banking&l=london&co=GB&start=0
http://www.indeed.com/resumes?q=banking&l=london&co=GB&start=50
http://www.indeed.com/resumes?q=banking&l=london&co=GB&start=100
我将此信息传递到我的AHK代码中,并尝试获取属性onclick的值,然后将其添加到csv文件中。例如,在下面的代码块中,它将是
window.open('/r/Angela Wallington/1872b08acbe9d892?sp=0','_blank')


我做错了什么?

要在示例文本中找到
OnClick
值,可以执行以下操作:

Regex := "i)<div\s(?=(?:[^>=]|=(?:'[^']*'|""[^""]*""|[^'""][^\s>]*))*?\sonclick=[""]([^""]*""))(?:[^>=]|=(?:'[^']*'|""[^""]*""|[^'""\s]*))*\s?\/?>"

InputString := ""

InputString .= "<div class=""clickable_resume_card"" onclick=""window.open(''/r/Angela-Wallington/1872b08acbe9d892?sp=0'', ''_blank'')"" target=""_blank"" style=""cursor: pointer;"">"
InputString .= "<div class=""app_name""><a target=""_blank"" data-tn-element=""resume-result-link[]"" data-tn-link="""" rel=""nofollow"" class=""app_link"" itemprop=""url"">Angela Wallington</a><span class=""location""> - Dartford</span></div>"
InputString .= "<div class=""experience"">Controls Analyst, Everyday Banking Customer Services, Operations<span class=""company""> - Royal Bank of ...</span></div>"
InputString .= "<div class=""experience"">Internal Controls Manager, Retail Processing Operations</div>"
InputString .= "<div class=""experience"">Team Manager Chatham Account Management Centre</div>"
InputString .= "<div class=""times"">"
InputString .= "<form action=""/resumes/rpc/resume/save"" method=""post"" style=""display:inline"" id=""saveResumeForm-1872b08acbe9d892"">"
InputString .= "<input type=""hidden"" name=""indeedcsrftoken"" value=""t0U3JHF5msLu4nhlI9Tq81HhIAhVCiNG"">"
InputString .= "<input type=""hidden"" name=""rez"" value=""1872b08acbe9d892"">"
InputString .= "</form><span class=""container""><a rel=""nofollow"" id=""saveRezAnon-1872b08acbe9d892"" data-rez=""1872b08acbe9d892"" class=""sl link savelink anon"" data-tn-element=""serp-result-save-link"" data-tn-link=""redirect"" href=""/resumes/account/register?dest=%2Fresumes%3Fq%3Dbanking%26l%3Dlondon%26co%3DGB%26start%3D50"">save CV</a></span>    - <span class=""last_updated"">Updated: 4-Jun</span></div>"
InputString .= "</div>"


RegexMatch(InputString, Regex, OnClickValue)
strMessage .= "`n`nOnClickValue = '" . OnClickValue1 . "'"
MsgBox, % strMessage

您是否收到任何错误消息?如果你浏览这些论坛,你会看到很多q's re-AHK的
getElementsByClassName
实现,因为对于很多人来说,它的效果并不理想。在这种情况下,您可以查询div标记,并使用
.InnerHTML
在每个标记中搜索类名,以获得所需的元素。然后尝试
元素[A_Index-1]。单击
(参见此方法的示例)。HTH.如果我传入一个URL而不是一个字符串,这会起作用吗?这个表达式只解析给定的文本块,查找具有
onclick
属性的
div
标记。
fileread, siteList, List.csv

loop, parse, siteList, `n, `r 
{
    Sleep, 2000
    Url = %A_LoopField%
    Pwb := ComObjCreate( "InternetExplorer.Application" )   
    Pwb.Navigate(Url)                                               
    Pwb.Visible := True

    While ( Pwb.Busy || Pwb.ReadyState != 4 )                                                                           
        Sleep 10

    CV_Elements := IE.document.getElementsByClassName("clickable_resume_card")

    Loop, % CV_Elements.length
       {
        CV_Url := Elements[A_Index-1].onclick
       }
}
Regex := "i)<div\s(?=(?:[^>=]|=(?:'[^']*'|""[^""]*""|[^'""][^\s>]*))*?\sonclick=[""]([^""]*""))(?:[^>=]|=(?:'[^']*'|""[^""]*""|[^'""\s]*))*\s?\/?>"

InputString := ""

InputString .= "<div class=""clickable_resume_card"" onclick=""window.open(''/r/Angela-Wallington/1872b08acbe9d892?sp=0'', ''_blank'')"" target=""_blank"" style=""cursor: pointer;"">"
InputString .= "<div class=""app_name""><a target=""_blank"" data-tn-element=""resume-result-link[]"" data-tn-link="""" rel=""nofollow"" class=""app_link"" itemprop=""url"">Angela Wallington</a><span class=""location""> - Dartford</span></div>"
InputString .= "<div class=""experience"">Controls Analyst, Everyday Banking Customer Services, Operations<span class=""company""> - Royal Bank of ...</span></div>"
InputString .= "<div class=""experience"">Internal Controls Manager, Retail Processing Operations</div>"
InputString .= "<div class=""experience"">Team Manager Chatham Account Management Centre</div>"
InputString .= "<div class=""times"">"
InputString .= "<form action=""/resumes/rpc/resume/save"" method=""post"" style=""display:inline"" id=""saveResumeForm-1872b08acbe9d892"">"
InputString .= "<input type=""hidden"" name=""indeedcsrftoken"" value=""t0U3JHF5msLu4nhlI9Tq81HhIAhVCiNG"">"
InputString .= "<input type=""hidden"" name=""rez"" value=""1872b08acbe9d892"">"
InputString .= "</form><span class=""container""><a rel=""nofollow"" id=""saveRezAnon-1872b08acbe9d892"" data-rez=""1872b08acbe9d892"" class=""sl link savelink anon"" data-tn-element=""serp-result-save-link"" data-tn-link=""redirect"" href=""/resumes/account/register?dest=%2Fresumes%3Fq%3Dbanking%26l%3Dlondon%26co%3DGB%26start%3D50"">save CV</a></span>    - <span class=""last_updated"">Updated: 4-Jun</span></div>"
InputString .= "</div>"


RegexMatch(InputString, Regex, OnClickValue)
strMessage .= "`n`nOnClickValue = '" . OnClickValue1 . "'"
MsgBox, % strMessage
OnClickValue = 'window.open(''/r/Angela-Wallington/1872b08acbe9d892?sp=0'', ''_blank'')"'