|
WinHttp. Получить текст html страницы | ☑ | ||
---|---|---|---|---|
0
Zixxx
26.08.15
✎
16:10
|
Пробую получить текст страницы по ссылки, URL - произвольная ссылка
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Open("GET", URL, Ложь); WinHttp.Send(); Если WinHttp.Status = 200 Тогда Текст = WinHttp.ResponseText; Возврат Текст; Иначе Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText); Возврат ""; КонецЕсли; В итоге получаю ошибку. Ошибка при вызове метода контекста (Send): Произошла исключительная ситуация (WinHttp.WinHttpRequest): Область данных, переданная по системному вызову, слишком мала. Ошибка выходит для любой ссылке. Как получить текст html по ссылке через WinHttp? Или есть какие-то другие методы? Через ПолеHTML документа не подходит |
|||
1
Lexey_
26.08.15
✎
16:18
|
(0) HTTPЗапрос
|
|||
2
Zixxx
26.08.15
✎
16:41
|
(1) Что я делаю не так?
HTTPЗапрос = Новый HTTPЗапрос(); HTTPЗапрос.АдресРесурса = "/topic.php?id=751707"; Соединение = Новый HTTPСоединение("http://www.forum.mista.ru", , , , Новый ИнтернетПрокси, , Новый ЗащищенноеСоединениеOpenSSL); ОтветHTTP = Соединение.Получить(HTTPЗапрос); Тело = ОтветHTTP.ПолучитьТелоКакСтроку(); |
|||
3
Lexey_
26.08.15
✎
16:49
|
(2) убери http:// и Новый ЗащищенноеСоединениеOpenSSL
|
|||
4
efim16rus
26.08.15
✎
16:56
|
||||
5
Zixxx
26.08.15
✎
17:26
|
Тело возвращает как
<html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html> Что еще добавить нужно? |
|||
6
Asmody
26.08.15
✎
17:41
|
зачем тебе ssl на мисте?
|
|||
7
Zixxx
26.08.15
✎
17:52
|
(6) Убрал уже, брал из примера который был, но результат от этого не поменялся
|
|||
8
Lexey_
26.08.15
✎
18:01
|
(7) весь код посмотреть бы
|
|||
9
Asmody
26.08.15
✎
18:36
|
(7) код ответа 301 - это постоянный редирект. Надо в заголовках смотреть на location и брать оттуда адрес.
|
|||
10
Zixxx
26.08.15
✎
19:03
|
(8)
HTTPСоединение = Новый HTTPСоединение("forum.mista.ru"); HTTPЗапрос = Новый HTTPЗапрос("/topic.php?id=751707"); ВременныйФайл = ПолучитьИмяВременногоФайла(); HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос); КодСостояния = HTTPОтвет.КодСостояния; responseText = HTTPОтвет.ПолучитьТелоКакСтроку(); Сообщить(responseText); |
|||
11
Lexey_
26.08.15
✎
19:06
|
(10) HTTPСоединение = Новый HTTPСоединение("http://www.forum.mista.ru");
|
|||
12
Lexey_
26.08.15
✎
19:06
|
(11) без http, но с www
|
|||
13
Lexey_
26.08.15
✎
19:08
|
(11) http форум дописал
|
|||
14
Рэйв
26.08.15
✎
19:09
|
следующий вопрос наверное будет- как парсить то что получил:-)
|
|||
15
Asmody
26.08.15
✎
19:09
|
(13) форум - он такой
|
|||
16
Рэйв
26.08.15
✎
19:10
|
(15)Злой
|
|||
17
Asmody
26.08.15
✎
19:10
|
(14) Зачем парсить мисту?
|
|||
18
Рэйв
26.08.15
✎
19:10
|
(15)И к нубам злой и просто так стал:--)
|
|||
19
Рэйв
26.08.15
✎
19:11
|
(17)здрасте. он html собрался получать
|
|||
20
Рэйв
26.08.15
✎
19:11
|
его можно конечно как текст разобрать, но сам понимаешь что это за гемор:-)
|
|||
21
Asmody
26.08.15
✎
19:18
|
(20) Если html валидный, его можно в ДокументHTML засунуть, оттуда получить ДокументDOM, а его уже обрабатывать через xpath. Это уже обсуждали с примерами.
|
|||
22
Рэйв
26.08.15
✎
19:23
|
(21)Я не сомневаюсь, что ты бы его и через скуль провернул:-)
|
|||
23
Asmody
26.08.15
✎
19:53
|
(22) Я бы его провернул через какой-нибудь маленький сервис, который мне отдал бы нужные данные на тарелочке.
|
|||
24
Котокот
26.08.15
✎
22:10
|
(0) Твоя ошибка в том, что ты используешь WinHTTP. Сделай так:
ЧтениеHTML = Новый ЧтениеHTML; ЧтениеHTML.ОткрытьФайл("http://www.forum.mista.ru", "utf-8"); ПостроительDOM = Новый ПостроительDOM; ДокументDOM = ПостроительDOM.Прочитать(ЧтениеHTML); Если ДокументDOM.Тело = Неопределено Тогда // Ответ не получен Сообщить("Оу щит"); Иначе // Получили ответ ТекстСтраницы = ДокументDOM.Тело.ТекстовоеСодержимое; КонецЕсли; |
|||
25
Котокот
26.08.15
✎
22:14
|
+(24) Тут, если что, уже и готовый ДокументHTML впридачу, перебирай его, если надо, доставай нужные элементы и их содержимое, парсить ничего не надо.
|
|||
26
Zixxx
26.08.15
✎
22:25
|
(25) А что такое щит?
|
|||
27
Asmody
26.08.15
✎
22:28
|
(26)
![]() |
|||
28
Котокот
26.08.15
✎
22:31
|
(26) “Ship High In Transit” (”перевозить только наверху”)
http://pikabu.ru/story/proiskhozhdenie_slova_shit_106762 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |