Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение HTML кода страницы 
:(
    Опции темы
grazir555
Дата 22.4.2015, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.4.2015

Репутация: нет
Всего: нет



Добрый день.
Написал программу:
Код

Const INTERNET_OPEN_TYPE_PRECONFIG = 0
 Const INTERNET_OPEN_TYPE_DIRECT = 1
 Const INTERNET_OPEN_TYPE_PROXY = 3
 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 Sub Command1_Click()
Dim hInternetSession As Long
Dim hURL As Long
Dim bResult As Boolean
Dim cBuffer As String * 30000 '4096
 
'Make internet connection.
hInternetSession = InternetOpen("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
 
'Make connection to desired page.
hURL = InternetOpenUrl(hInternetSession, Text2, vbNullString, 0, 0, 0)
 
'Read page into memory buffer.
bResult = InternetReadFile(hURL, cBuffer, 30000, dwBytesRead)
Text1 = cBuffer
'Close down connections.
InternetCloseHandle (hURL)
InternetCloseHandle (hInternetSession)
End Sub


При открытии "https://www.site.com/4366" всё проходит гладко, но
при открытии "https://www.site.com/4366#!tab=din&page=2" возникает ошибка 400 - не правильный URL.

 Подскажите как это победить

Это сообщение отредактировал(а) grazir555 - 23.4.2015, 02:52
PM MAIL   Вверх
Akina
Дата 22.4.2015, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Перевести проблемные символы (диез и восклицательный знак) в хексы:
Код

https://www.mql5.com/en/signals/48366%23%21tab=trading&page=2



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
grazir555
Дата 23.4.2015, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.4.2015

Репутация: нет
Всего: нет



Пробовал - не канает.

В принципе, я пробовал использовать контролл WebBrowser. Открывал первый URL, находил в нём ссылку перехода на следующую страницу, программно нажимал на неё, WebBrowser переходил на второй URL. Затем с помощью WebBrowser.Document.Body.InnerHtml получал нужный мне HTML код второй страницы. А ннет! Тут косяк другой - содержимое страницы полностью не влазиет в переменную String!

Может знаете как WebBrowser.Document.Body.InnerHtml распихать хотя-бы в массив из строк?
PM MAIL   Вверх
Akina
Дата 23.4.2015, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Цитата(grazir555 @  23.4.2015,  02:36 Найти цитируемый пост)
содержимое страницы полностью не влазиет в переменную String!

Нет такой буквы! Максимальный размер переменной типа String составляет около 2 Гбайт, и я не верю, что этого недостаточно для помещения в неё кода страницы.
Скорее просто не вся страница загружается. Либо ты её начинаешь выгребать, не дождавшись окончания загрузки (см. navigate2 event, readystate property).

Добавлено через 3 минуты и 40 секунд
Можешь попробовать Internet Transfer Control, методы OpenURL или Execute. При асинхронном вызове - не забывай про State Event и GetChunk Method.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
grazir555
Дата 27.4.2015, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.4.2015

Репутация: нет
Всего: нет



Вот - наглядный пример:

https://cloud.mail.ru/public/32JEUdfULEPE/test.zip

Как объясните этот феномен???
PM MAIL   Вверх
Akina
Дата 27.4.2015, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Это не феномен, это по-другому называется. Как - не скажу, ты обидишься.

Код

Private Sub Command2_Click()
Text1.Text = WebBrowser1.Document.Body.InnerHtml
MsgBox "HTML length = " & CStr(Len(WebBrowser1.Document.Body.InnerHtml)) & vbNewLine & _
       "Max String property length = " & CStr(Len(Text1.Text))
End Sub




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
grazir555
Дата 6.5.2015, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.4.2015

Репутация: нет
Всего: нет



Умник чтоли??? Пост назад ты говорил "Максимальный размер переменной типа String составляет около 2 Гбайт, и я не верю, что этого недостаточно для помещения в неё кода страницы".

Так что не надо съезжать с темы и тыкать меня носом в текстбокс. Отвечай за свои слова и выполняй "Command4_Click".

А что касается текстбокса, то я в курсе что там лимит симболов 65 тыщ.
PM MAIL   Вверх
Akina
Дата 6.5.2015, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Господи, как же я не люблю самоуверенных дилетантов...

Цитата(grazir555 @  6.5.2015,  09:02 Найти цитируемый пост)
не надо съезжать с темы и тыкать меня носом в текстбокс.

Да? а кто тут возмущался, что 
Цитата(grazir555 @  23.4.2015,  02:36 Найти цитируемый пост)
Тут косяк другой - содержимое страницы полностью не влазиет в переменную String!

Я, что ли? 
Код

Private Sub Command5_Click()
textstring = WebBrowser1.Document.Body.InnerHtml
MsgBox "String length = " & CStr(Len(textstring))
End Sub

В переменную влезает всё. 

А что касается кода в проекте, где ты не находишь подстроки "</html>"... не поверишь, но это опять-таки твоё нежелание пользоваться мозгом.
Сделай вот так:
Код

Private Sub Command5_Click()
textstring = WebBrowser1.Document.Body.InnerHtml
MsgBox "String length = " & CStr(Len(textstring))
Open "b:\text.txt" For Output As #1 ' Тут есссно подставь свой путь 
Print #1, WebBrowser1.Document.Body.InnerHtml
Close
End Sub


Открой полученный файл - да хоть в блокноте. Теперь открой этот же УРЛ в браузере, попроси исходный код страницы. И сравни с сохранённым файлом. А потом обрати внимание, что ты тащишь из контрола. А тащишь ты из него WebBrowser1.Document.Body.InnerHtml ! Вот стОит ли удивляться, что он отдал тебе не весь текст, а только секцию <body>, а? в которой, это даже дураку ясно, искать тег </html> - по меньшей мере странное занятие...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.