Страница: 1 |
Вопрос как получить текст из html странички не сохраняя её на винте? В принципе я даже знаю ответ на этот вопрос: -- 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 Private 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 Not CBool(lNumberOfBytesRead) Then bDoLoop = False Wend If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl) If hOpen <> 0 Then InternetCloseHandle (hOpen) OpenURL = sBuffer End Function Private Sub Command1_Click() Text1 = OpenURL("http://vc-world.net/") End Sub ---------- НО если трафика очень мало, то прога не может получить долгое время инфу и из за этого тормозит, а иногда и виснит! -- Вопрос. Может кто-то аналогичный код знает или как этот код улучшить?! Заранее спасибо!
Вообще для этих вещей существуют thread'ы, вот только проблемма была и остается - VB не совсем корректно с этой технологией взаимодействует Да чё вы?какие thread'ы?Про НТТР забыли? ---- Кинь на форму контрол "Тяга 1.5" (newrate.boom.ru) и текстовое поле, в текстового поля поставь свойсво Multiline=true и ScroolBars=2. розтяни его как можно побольше. ---code--- Private Sub Form_Load() T1.Connect "vc-world.net", 80 Dim HTTP_P As String HTTP_P = "GET http://vc-world.net/ HTTP/1.0" & vbCrLf & _ "Proxy-connection: close" & vbCrLf & vbCrLf T1.SendData HTTP_P End Sub Private Sub T1_DataArrival(Data As String) Text1.Text = Text1.Text & Data End Sub ------EOCode--- Да не в этом дело то... при обращении, скажем через те же АПИ (Тяга) приложение как бы подвисает, это как можно избежать... вот я и говорю, что лучше бы это оформить в качестве отдельной функции в отдельном thread'e Приложение подвисает потому, что я использую блокирующие ф-ции коннекта и резольвинга (для избежания винсоковского бага ws.senddata сразу после ws.connect).А если кому нужно, чтоб не подвисало ничего, мыльте, там просто нужно setsockopt или WSASocket,WSAConnect и. т. п. Ну так кто-то конкретно может сказать как текст получать с html чтоб прога не подвисала или нет??? И ещё что это за элемент T1??? Это всё хорошо насчёт тяги, но если надо просто получить строку что на странице находится то что делать? Мне выводит вот это: Text1HTTP/1.1 200 OK Date: Wed, 07 Apr 2004 21:43:23 GMT Server: Apache/1.3.29 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.4 FrontPage/5.0.2.2634 mod_ssl/2.8.16 OpenSSL/0.9.7a X-Powered-By: PHP/4.3.4 Connection: close Content-Type: text/html Login: OK А надо вот это: Login: OK Левый текст - НТТР ответ, обреж его (первые два vbcrlf). Страница: 1 |
Вопрос: Вопрос как получить текст из html странички не ...
Добавлено: 03.04.04 23:17
Автор вопроса: MasterYan | Web-сайт:
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 04.04.04 13:21
Вмысле трафика мало? страница маленькая или что?
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 04.04.04 13:48
Номер ответа: 3
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #3
Добавлено: 07.04.04 00:14
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 07.04.04 17:09
Номер ответа: 5
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #5
Добавлено: 07.04.04 22:55
Номер ответа: 6
Автор ответа:
MasterYan
ICQ: 167425994
Вопросов: 31
Ответов: 5
Web-сайт:
Профиль | | #6
Добавлено: 08.04.04 00:50
Номер ответа: 7
Автор ответа:
MasterYan
ICQ: 167425994
Вопросов: 31
Ответов: 5
Web-сайт:
Профиль | | #7
Добавлено: 08.04.04 01:46
Номер ответа: 8
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #8
Добавлено: 08.04.04 21:24
Номер ответа: 9
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #9
Добавлено: 09.04.04 11:08
А что вы будете делать, если сервер отдаст текст, например, в виде
chunked-кодирования?