Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Получение html кода страницы Добавлено: 12.04.07 00:02  

Автор вопроса:  Vasiliy
К примеру задаем в текст-боксе url-адрес страницы, после чего нужно получить htnl код страницы (как файл наверное) и открыть на чтение.. буду ОЧЕНЬ признателен! :)

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 12.04.07 00:30
Составляешь GET-запрос вида
GET /index.php HTTP/1.1
Host: esci.ru

Два энтера обязательны, соединяешься с хостом по 80-му порту через сокеты. Получаешь HTTP-ответ. И выдираешь из него HTML-код.

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 12.04.07 00:54
можно так

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const scUserAgent = "VB Project"
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Public Function OpenURL(ByVal sUrl As String) As String
    Dim hOpen As Long
    Dim hOpenUrl As Long
    Dim bDoLoop As Boolean
    Dim bRet As Boolean
    Dim sReadBuffer As String * 2048
    Dim lNumberOfBytesRead As Long
    Dim sBuffer As String
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
    bDoLoop = True
    While bDoLoop
    sReadBuffer = vbNullString
    bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
    sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
    If lNumberOfBytesRead = 0 Then bDoLoop = False
    Wend
    If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
    If hOpen <> 0 Then InternetCloseHandle (hOpen)
    OpenURL = sBuffer
End Function


можно через
Private Declare Sub URLDownloadToFile Lib "URLMON.dll" (ByVal lpunknown As Long, ByVal lpcstr As String, ByVal lpcstr As String, ByVal dword As Long, ByRef TLPBINDSTATUSCALLBACK As LPBINDSTATUSCALLBACK)


можно через сокеты

Ответить

Номер ответа: 3
Автор ответа:
 Дмит



Вопросов: 11
Ответов: 160
 Web-сайт: dimit.pochta.ru
 Профиль | | #3
Добавлено: 12.04.07 18:18
Может проще через Webbrowser:
http://dimit.pochta.ru/excel/webbrowser.zip

Ответить

Номер ответа: 4
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #4 Добавлено: 13.04.07 00:59
если бы еще построчно прокомментировали вообще бы цены вам не было :)

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 13.04.07 02:35
На такие предложения у нас всегда есть готовый ответ: 20 wmz :)

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 13.04.07 09:41
30 wmz

Ответить

Номер ответа: 7
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #7 Добавлено: 13.04.07 17:16
ну да это я как-то неподумав ляпнул :) а как насчет просто описать в двух словах алгоритм?:)

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 13.04.07 18:49
Алгоритм прост - берешь какую-нибудь библиотечку, позволяющую спрашиваемое, и юзаешь. В качестве вариантов были предложены: сокеты, InternetReadFile, URLDownloadToFile, компонент WebBrowser

Ответить

Номер ответа: 9
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #9 Добавлено: 16.04.07 02:04
эм.. я пока еще полный профан поэтому не знаю как это делается :) Воспользовался скрипто ХАКЕРа - он возвращает код страницы как огрооомную строку, вот захотелось узнать как же он работает.. хоть в двух словах.. (

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 16.04.07 03:02
Если тебе интересны все нюансы, нужно найти описание API функция, например в msdn'e.

В двух словах:
    hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0) 'Создали соединение
    hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0) 'открыли узел для получения данных
    bDoLoop = True
    While bDoLoop 'цикл пока все данные небудут вычитаны
    sReadBuffer = vbNullString
    bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead) 'получаем пучёк данных
    sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead) 'накапливаем пучки в строку
    If lNumberOfBytesRead = 0 Then bDoLoop = False 'если ничего не прочитали - данные закончились - вышли из цикла
    Wend
'Закрываем все хенделы
    If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
    If hOpen <> 0 Then InternetCloseHandle (hOpen)
    OpenURL = sBuffer 'возвращаем строку

Ответить

Номер ответа: 11
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #11 Добавлено: 16.04.07 14:50
спасибо большое!

Ответить

Номер ответа: 12
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #12 Добавлено: 30.05.07 19:56
реестр

Ответить

Номер ответа: 13
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #13 Добавлено: 30.05.07 19:57
блин я хотел написать это в поиск удалите плиз :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам