Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вопрос как получить текст из html странички не ... Добавлено: 03.04.04 23:17  

Автор вопроса:  MasterYan | Web-сайт: vc-studio.org/ | ICQ: 167425994 

Вопрос как получить текст из 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

----------

НО если трафика очень мало, то прога не может получить долгое время инфу и из за этого тормозит, а иногда и виснит!

--

Вопрос. Может кто-то аналогичный код знает или как этот код улучшить?!

Заранее спасибо!

Ответить

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

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 04.04.04 13:21
Вмысле трафика мало? страница маленькая или что?

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 04.04.04 13:48

Вообще для этих вещей существуют thread'ы, вот только проблемма была и остается - VB не совсем корректно с этой технологией взаимодействует :(

Ответить

Номер ответа: 3
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #3
Добавлено: 07.04.04 00:14

Да чё вы?какие 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---

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 07.04.04 17:09

Да не в этом дело то... при обращении, скажем через те же АПИ (Тяга) приложение как бы подвисает, это как можно избежать... вот я и говорю, что лучше бы это оформить в качестве отдельной функции в отдельном thread'e

Ответить

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



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #5
Добавлено: 07.04.04 22:55

Приложение подвисает потому, что я использую блокирующие ф-ции коннекта и резольвинга (для избежания винсоковского бага ws.senddata сразу после ws.connect).А если кому нужно, чтоб не подвисало ничего, мыльте, там просто нужно setsockopt или WSASocket,WSAConnect и. т. п.

Ответить

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



ICQ: 167425994 

Вопросов: 31
Ответов: 5
 Web-сайт: vc-studio.org/
 Профиль | | #6
Добавлено: 08.04.04 00:50

Ну так кто-то конкретно может сказать как текст получать с html чтоб прога не подвисала или нет???

И ещё что это за элемент T1???

Ответить

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



ICQ: 167425994 

Вопросов: 31
Ответов: 5
 Web-сайт: vc-studio.org/
 Профиль | | #7
Добавлено: 08.04.04 01:46

Это всё хорошо насчёт тяги, но если надо просто получить строку что на странице находится то что делать?

Мне выводит вот это:

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

Ответить

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



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #8
Добавлено: 08.04.04 21:24

Левый текст - НТТР ответ, обреж его (первые два vbcrlf).

Ответить

Номер ответа: 9
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #9
Добавлено: 09.04.04 11:08
А что вы будете делать, если сервер отдаст текст, например, в виде
chunked-кодирования? ;)

Ответить

Страница: 1 |

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



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