powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить HTML-код страницы, генерируемой javascript
8 сообщений из 8, страница 1 из 1
Получить HTML-код страницы, генерируемой javascript
    #36674320
Максим М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

Есть задача получения HTML кода сайта, которую я решаю следующим нехитрым способом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function GetHTML(URL As String)
    Dim runReq As Object
    runReq.Open "GET", URL, False
    runReq.Send
    GetHTML = runReq.ResponseText
    Set runReq = Nothing
End Function

Однако недавно задача усложнилась: в HTML коде сайта попадаются следующие ссылки:

<A HREF="javascript://"
CLASS=PRICELISTS_MENU
onClick="showPricelists('80a73881b29aa19ad5524ab7ef3f9998', this); return false;"
onMouseOver="self.status = 'Архангельск'; return true;"
onMouseOut="hidePricelists(); self.status = ''; return true;">Архангельск</A>

Вживую это выглядит так (моя цель - длинный вертикальный список городов).

В браузере при нажатии на подобную ссылку открывается маленькое окошко, HTML которого мне как раз и необходимо заполучить.

В яваскрипте я полный ноль, даже не знаю в какую сторону гуглить. Подозреваю, что при клике на ссылку запускается функция showPricelists, вероятно возвращающая браузеру HTML окошка.

Каким образом получить HTML окошка? Можно ли это сделать без подключения тяжелой артиллерии в виде IE?
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36674394
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим М.Можно ли это сделать без подключения тяжелой артиллерии в виде IE?

Не владею в достаточной степени вопросом, чтобы квалифицированно дать ответ, но, по крайней мере, javascript должен кто-то выполнить, и этот кто-то - движок браузера. Так что может без артиллерии и не получится...
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36674525
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим М., Вас интересуют эти файлы ?
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36676273
Максим М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.Максим М., Вас интересуют эти файлы ?

Они самые.
В принципе я могу составить писок ссылок вручную и качать файлы по ним, однако я не уверен, что при изменении файла не изменится его идентификатор (и, соответсвенно, ссылка). Так что если подскажите более элегантный способ выкачки этих файлов, буду весьма признателен =)
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36676590
ak787
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим М.,

юзайте WebBrowser метод Navigate
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36676654
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим М., скачиваете полностью эту страницу , вставляете куда-нить теги <script> со своим кодом </script> и юзаете массив citiesCache, в котором есть ссылки на файлы...
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36676807
Максим М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ak787Максим М.,
юзайте WebBrowser метод Navigate
Я бы рад, но у меня с ним проблемы...
И потом IE тормозит безбожно, WinHttpRequest по сравнению с ним просто самолет.

.Михаил.Максим М., скачиваете полностью эту страницу , вставляете куда-нить теги <script> со своим кодом </script> и юзаете массив citiesCache, в котором есть ссылки на файлы...

Михаил, спасибо что открыли глаза! Уже скачивал HTML, но не досмотрел файл до конца, а там оказывается все ссылки на поверхности. Теперь запросто разберу его при помощи InStr.

PS: я только не понял вашу мысль по поводу скачивания страницы целиком: к простому HTML там добавляются 2 файла javascript (ga и rates), с которыми я не знаю что делать... Подозреваю, вы имели в виду более элегантный способ юзанья citiesCache, нежели простой текстовый разбор htmlя?
...
Рейтинг: 0 / 0
Получить HTML-код страницы, генерируемой javascript
    #36677699
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим М., открываешь Excel, жмешь Alt+F11, добавляешь новый модуль, туда кидаешь сей код и запускаешь test.
Примечание: лист, куда отображается информация должен иметь имя Лист1 .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Option Explicit
Sub test()
Dim xmlHTTP As Object, javaText As String, HostName As String, str() As String, pos As Integer
Dim link As String, c As Object, fso As Object, TextStream As Object, objRegExp As Object, objSb As Object, WshShell As Object
Dim PathTemp As String, FileTemp As String
Set xmlHTTP = CreateObject("MSXML2.XMLHTTP")
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set objRegExp = CreateObject("VBScript.RegExp")
HostName = "http://www.gruzovozoff.ru"
PathTemp = "C:\Temp\"
FileTemp = Replace(fso.GetTempName, ".tmp", "")
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.MultiLine = True
objRegExp.Pattern = "<script[^>]*>([^<>]*(?=city = new Array)+[^<>]*)</script>"
xmlHTTP.Open "GET", HostName & "/rus/rates.php", False
xmlHTTP.Send
Do While xmlHTTP.readyState <>  4 
    DoEvents
Loop
Set objSb = objRegExp.Execute(xmlHTTP.ResponseText).Item( 0 ).Submatches
Set xmlHTTP = Nothing
javaText = Replace(objSb.Item( 0 ), Chr( 13 ), "")
javaText = Replace(javaText, Chr( 10 ), "")
javaText = javaText & " var fso = WScript.CreateObject('Scripting.FileSystemObject');"
javaText = javaText & " var TextStream = fso.CreateTextFile('" & Replace(PathTemp, "\", "\\") & FileTemp & ".txt',true);"
javaText = javaText & " var k; for(k in citiesCache){TextStream.WriteLine(citiesCache[k]['name']+' | '+citiesCache[k]['local']+' | '+citiesCache[k]['in']+' | '+citiesCache[k]['out']);}"
Set TextStream = fso.CreateTextFile(PathTemp & FileTemp & ".js")
TextStream.Write javaText
TextStream.Close
WshShell.Run "wscript.exe " & PathTemp & FileTemp & ".js",  1 , True
Set TextStream = fso.OpenTextFile(PathTemp & FileTemp & ".txt",  1 )
pos =  1 
While Not TextStream.AtEndOfStream
    Erase str
    str = Split(TextStream.ReadLine(), " | ")
    pos = pos +  1 
    Лист1.Cells(pos,  1 ).Value = str( 0 )
    Set c = Лист1.Cells(pos,  2 )
    link = HostName & Replace(str( 1 ), "..", "")
    c.Hyperlinks.Add Anchor:=c, Address:=link, ScreenTip:=link
    c.Value = "local"
    c.Font.Underline = xlUnderlineStyleNone
    Set c = Лист1.Cells(pos,  3 )
    link = HostName & Replace(str( 2 ), "..", "")
    c.Hyperlinks.Add Anchor:=c, Address:=link, ScreenTip:=link
    c.Value = "in"
    c.Font.Underline = xlUnderlineStyleNone
    Set c = Лист1.Cells(pos,  4 )
    link = HostName & Replace(str( 3 ), "..", "")
    c.Hyperlinks.Add Anchor:=c, Address:=link, ScreenTip:=link
    c.Value = "out"
    c.Font.Underline = xlUnderlineStyleNone
Wend
TextStream.Close
fso.DeleteFile PathTemp & FileTemp & ".js"
fso.DeleteFile PathTemp & FileTemp & ".txt"
Set TextStream = Nothing
Set fso = Nothing
End Sub
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить HTML-код страницы, генерируемой javascript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]