Получить HTML-код страницы, генерируемой javascript - VB
Формулировка задачи:
Доброго времени суток!
Есть задача получения HTML кода сайта, которую я решаю следующим нехитрым способом:
Однако недавно задача усложнилась: в HTML коде сайта попадаются следующие ссылки:
CLASS=PRICELISTS_MENU
onClick="showPricelists('80a73881b29aa19ad5524ab7ef3f9998', this); return false;"
onMouseOver="self.status = 'Архангельск'; return true;"
onMouseOut="hidePricelists(); self.status = ''; return true;">Архангельск
Вживую это выглядит так (моя цель - длинный вертикальный список городов).
В браузере при нажатии на подобную ссылку открывается маленькое окошко, HTML которого мне как раз и необходимо заполучить.
В яваскрипте я полный ноль, даже не знаю в какую сторону гуглить. Подозреваю, что при клике на ссылку запускается функция showPricelists, вероятно возвращающая браузеру HTML окошка.
Каким образом получить HTML окошка? Можно ли это сделать без подключения тяжелой артиллерии в виде IE?
Есть задача получения HTML кода сайта, которую я решаю следующим нехитрым способом:
Однако недавно задача усложнилась: в HTML коде сайта попадаются следующие ссылки:
CLASS=PRICELISTS_MENU
onClick="showPricelists('80a73881b29aa19ad5524ab7ef3f9998', this); return false;"
onMouseOver="self.status = 'Архангельск'; return true;"
onMouseOut="hidePricelists(); self.status = ''; return true;">Архангельск
Вживую это выглядит так (моя цель - длинный вертикальный список городов).
В браузере при нажатии на подобную ссылку открывается маленькое окошко, HTML которого мне как раз и необходимо заполучить.
В яваскрипте я полный ноль, даже не знаю в какую сторону гуглить. Подозреваю, что при клике на ссылку запускается функция showPricelists, вероятно возвращающая браузеру HTML окошка.
Каким образом получить HTML окошка? Можно ли это сделать без подключения тяжелой артиллерии в виде IE?
Решение задачи: «Получить HTML-код страницы, генерируемой javascript»
textual
Листинг программы
<font color="blue">Option</font> <font color="blue">Explicit</font> <font color="blue">Sub</font> test() <font color="blue">Dim</font> xmlHTTP <font color="blue">As</font> <font color="blue">Object</font>, javaText <font color="blue">As</font> <font color="blue">String</font>, HostName <font color="blue">As</font> <font color="blue">String</font>, str() <font color="blue">As</font> <font color="blue">String</font>, pos <font color="blue">As</font> <font color="blue">Integer</font> <font color="blue">Dim</font> link <font color="blue">As</font> <font color="blue">String</font>, c <font color="blue">As</font> <font color="blue">Object</font>, fso <font color="blue">As</font> <font color="blue">Object</font>, TextStream <font color="blue">As</font> <font color="blue">Object</font>, objRegExp <font color="blue">As</font> <font color="blue">Object</font>, objSb <font color="blue">As</font> <font color="blue">Object</font>, WshShell <font color="blue">As</font> <font color="blue">Object</font> <font color="blue">Dim</font> PathTemp <font color="blue">As</font> <font color="blue">String</font>, FileTemp <font color="blue">As</font> <font color="blue">String</font> <font color="blue">Set</font> xmlHTTP = CreateObject(<font color="teal">"MSXML2.XMLHTTP"</font>) <font color="blue">Set</font> WshShell = CreateObject(<font color="teal">"WScript.Shell"</font>) <font color="blue">Set</font> fso = CreateObject(<font color="teal">"Scripting.FileSystemObject"</font>) <font color="blue">Set</font> objRegExp = CreateObject(<font color="teal">"VBScript.RegExp"</font>) HostName = <font color="teal">"http://www.gruzovozoff.ru"</font> PathTemp = <font color="teal">"C:\Temp\"</font> FileTemp = Replace(fso.GetTempName, <font color="teal">".tmp"</font>, <font color="teal">""</font>) objRegExp.IgnoreCase = True objRegExp.Global = True objRegExp.MultiLine = True objRegExp.Pattern = <font color="teal">"<script[^>]*>([^<>]*(?=city = new Array)+[^<>]*)"</script[^></font> xmlHTTP.<font color="blue">Open</font> <font color="teal">"GET"</font>, HostName & <font color="teal">"/rus/rates.php"</font>, False xmlHTTP.Send <font color="blue">Do</font> <font color="blue">While</font> xmlHTTP.readyState <> <font color="darkblue"><b>4</b></font> DoEvents <font color="blue">Loop</font> <font color="blue">Set</font> objSb = objRegExp.Execute(xmlHTTP.ResponseText).Item(<font color="darkblue"><b>0</b></font>).Submatches <font color="blue">Set</font> xmlHTTP = <font color="blue">Nothing</font> javaText = Replace(objSb.Item(<font color="darkblue"><b>0</b></font>), Chr(<font color="darkblue"><b>13</b></font>), <font color="teal">""</font>) javaText = Replace(javaText, Chr(<font color="darkblue"><b>10</b></font>), <font color="teal">""</font>) javaText = javaText & <font color="teal">" var fso = WScript.CreateObject('Scripting.FileSystemObject');"</font> javaText = javaText & <font color="teal">" var TextStream = fso.CreateTextFile('"</font> & Replace(PathTemp, <font color="teal">"\"</font>, <font color="teal">"\\"</font>) & FileTemp & <font color="teal">".txt',true);"</font> javaText = javaText & <font color="teal">" var k; for(k in citiesCache){TextStream.WriteLine(citiesCache[k]['name']+' | '+citiesCache[k]['local']+' | '+citiesCache[k]['in']+' | '+citiesCache[k]['out']);}"</font> <font color="blue">Set</font> TextStream = fso.CreateTextFile(PathTemp & FileTemp & <font color="teal">".js"</font>) TextStream.<font color="blue">Write</font> javaText TextStream.<font color="blue">Close</font> WshShell.Run <font color="teal">"wscript.exe "</font> & PathTemp & FileTemp & <font color="teal">".js"</font>, <font color="darkblue"><b>1</b></font>, True <font color="blue">Set</font> TextStream = fso.OpenTextFile(PathTemp & FileTemp & <font color="teal">".txt"</font>, <font color="darkblue"><b>1</b></font>) pos = <font color="darkblue"><b>1</b></font> <font color="blue">While</font> <font color="blue">Not</font> TextStream.AtEndOfStream <font color="blue">Erase</font> str str = Split(TextStream.ReadLine(), <font color="teal">" | "</font>) pos = pos + <font color="darkblue"><b>1</b></font> Лист1.Cells(pos, <font color="darkblue"><b>1</b></font>).Value = str(<font color="darkblue"><b>0</b></font>) <font color="blue">Set</font> c = Лист1.Cells(pos, <font color="darkblue"><b>2</b></font>) link = HostName & Replace(str(<font color="darkblue"><b>1</b></font>), <font color="teal">".."</font>, <font color="teal">""</font>) c.Hyperlinks.Add Anchor:=c, Address:=link, ScreenTip:=link c.Value = <font color="teal">"local"</font> c.Font.Underline = xlUnderlineStyleNone <font color="blue">Set</font> c = Лист1.Cells(pos, <font color="darkblue"><b>3</b></font>) link = HostName & Replace(str(<font color="darkblue"><b>2</b></font>), <font color="teal">".."</font>, <font color="teal">""</font>) c.Hyperlinks.Add Anchor:=c, Address:=link, ScreenTip:=link c.Value = <font color="teal">"in"</font> c.Font.Underline = xlUnderlineStyleNone <font color="blue">Set</font> c = Лист1.Cells(pos, <font color="darkblue"><b>4</b></font>) link = HostName & Replace(str(<font color="darkblue"><b>3</b></font>), <font color="teal">".."</font>, <font color="teal">""</font>) c.Hyperlinks.Add Anchor:=c, Address:=link, ScreenTip:=link c.Value = <font color="teal">"out"</font> c.Font.Underline = xlUnderlineStyleNone <font color="blue">Wend</font> TextStream.<font color="blue">Close</font> fso.DeleteFile PathTemp & FileTemp & <font color="teal">".js"</font> fso.DeleteFile PathTemp & FileTemp & <font color="teal">".txt"</font> <font color="blue">Set</font> TextStream = <font color="blue">Nothing</font> <font color="blue">Set</font> fso = <font color="blue">Nothing</font> <font color="blue">End</font> <font color="blue">Sub</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д