2016-07-01 1 views
1

У меня есть CSV (list.csv файл) со следующими URL-адресов:Перебор элементов и захватывая значение атрибута

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 

Я передаю эту информацию в мой АХК код, и я пытаюсь получить значение атрибута onclick, а затем добавьте его в файл csv. Например, в приведенном ниже блоке кода это будет window.open('/r/Angela-Wallington/1872b08acbe9d892?sp=0', '_blank').

<div class="clickable_resume_card" onclick="window.open('/r/Angela-Wallington/1872b08acbe9d892?sp=0', '_blank')" target="_blank" style="cursor: pointer;"> 
    <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> 
    <div class="experience">Controls Analyst, Everyday Banking Customer Services, Operations<span class="company"> - Royal Bank of ...</span></div> 
    <div class="experience">Internal Controls Manager, Retail Processing Operations</div> 
    <div class="experience">Team Manager Chatham Account Management Centre</div> 
    <div class="times"> 
    <form action="/resumes/rpc/resume/save" method="post" style="display:inline" id="saveResumeForm-1872b08acbe9d892"> 
     <input type="hidden" name="indeedcsrftoken" value="t0U3JHF5msLu4nhlI9Tq81HhIAhVCiNG"> 
     <input type="hidden" name="rez" value="1872b08acbe9d892"> 
    </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> 
</div> 

Это мой код до сих пор, я не могу показаться, чтобы выяснить, как захватить значение onclick или петли через каждый элемент под названием clickable_resume_card.

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 
     } 
} 

Что я делаю неправильно?

+0

вы получаете какое-либо сообщение об ошибке? Если вы просмотрите эти форумы, вы увидите многочисленные реплики AHK от 'getElementsByClassName', потому что для многих людей он работает только спотчинно. В этом случае вы можете запрашивать теги div и искать в каждом, используя '.InnerHTML' для имени класса, чтобы получить нужные вам элементы. Затем попробуйте «Элементы [A_Index-1] .click' (и см. Http://stackoverflow.com/questions/37327102/how-do-i-retrieve-some-information-from-html-code-in-ahk/37352242 # 37352242 для примера такого подхода). НТН. – PGilm

ответ

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'')"' 
+0

Будет ли это работать, если я передам URL вместо строки? – methuselah

+0

Это выражение анализирует только отдельный блок текста, ищущий теги div, которые имеют атрибут onclick. –