![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы |
![]() |
#1 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 25
|
![]()
Привет всем. У меня задача извлечь с сайта некоторый текст и отобразить его на мониторе.
Я извлекаю текст с помощью этих трех функций: InternetOpen InternetOpenUrl InternetReadFile InternetReadFile возвращает такие байты с сайта, что не известно, что с этими байтами делать. Если я просто копирую html-содержимое с сайта, затем вставляю в Notepad++, сохраняю файл, затем извлекаю байты из файла с помощью своей программы, то последовательность байтов другая и с ними уже что-то да получается сделать. Как извлечь с сайта байты в таком виде, чтобы с ними можно было что-то сделать? Интересует именно этот сайт, а не любой, т.к. проблема именно с этим сайтом, с другими сайтами такой проблемы нет. Прикладываю два файла с байтами. Одни байты получены с помощью "InternetReadFile", вторые я скопировал вручную (Ctrl+C, Ctrl+V) и вставил в Notepad++. Про функцию "URLDownloadToFile" мне известно. У меня вопрос по функции "InternetReadFile". Последний раз редактировалось Alex11223; 10.09.2019 в 12:46. |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 07.09.2019
Сообщений: 1
|
![]()
Извините, не смотрел по ссылке включая ваш пакет - попахивает пиаром.
Так вот, скорее всего, если вы работаете с функцией не предназначенной для работы с Много байтовой кодировкой вы получите что-то подобное "W E L C O M E" вместо "Добро пожаловать". Грузить страницы можно так Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 25
|
![]()
А что делать с функцией "InternetReadFile"? Отказаться от её использования? Это бракованная функция?
|
![]() |
![]() |
![]() |
#4 |
Модератор
Заслуженный модератор
Регистрация: 12.01.2011
Сообщений: 19,487
|
![]()
Использовать нормальный HTTP клиент.
Например, libcurl. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 25
|
![]()
А InternetReadFile считается ненормальным? Его ведь сделали в Microsoft'е, а не какой-то программист-самоучка.
Получается, что InternetReadFile изменяет извлеченные байты. Сначала InternetReadFile извлекает байты, затем внутренний механизм функции "InternetReadFile" изменяет байты и выдает их. |
![]() |
![]() |
![]() |
#6 |
Модератор
Заслуженный модератор
Регистрация: 12.01.2011
Сообщений: 19,487
|
![]()
Ну как минимум это менее удобно.
И может быть не поддерживает что-то новое. Вообще еще надо не забывать заголовки выставлять. Например, может какой-нибудь сервер блокирует по стандартным юзерагентам ботов (или другим заголовкам не похожими на браузеры). |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 25
|
![]()
Насколько я начинаю понимать, любая библиотека или еще что-то сделана на основе Win32 api-функций. В том числе и libcurl тоже использует Win32 api-функции.
Значит libcurl использует "URLDownloadToFile". Alex11223, можете скачать байты с сайта, который указан в первом посте, с помощью "libcurl" и посмотреть, все ли нормально? У меня нет возможности протестировать "libcurl". Последний раз редактировалось Alex11223; 10.09.2019 в 14:09. |
![]() |
![]() |
![]() |
#8 |
Модератор
Заслуженный модератор
Регистрация: 12.01.2011
Сообщений: 19,487
|
![]() |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 05.09.2019
Сообщений: 25
|
![]()
Alex11223, а что вы скачивали? В первом посте ссылки на сайт удалили.
Всё, вижу, вы и удалили ссылки. У меня открывается этот сайт в браузере. Если бы сайт не открывался в браузерах, я бы не создал этой темы. И есть другие инструменты для скачивания по HTTP, они нормально скачивают, в том числе и "URLDownloadToFile". Alex11223, а сокеты это что такое? Тоже Win32 API функции или совсем другое? Кто их сделал эти сокеты? В Microsoft'е? Официальный сайт сокетов есть? По сути нужно скачать байты в исходном виде, без каких-либо преобразований. Я так понимаю это делает "URLDownloadToFile". Но "URLDownloadToFile" сохраняет в файл. А у меня нет задачи скачать в файл, а нужно отобразить данные на мониторе. Последний раз редактировалось Alex11223; 10.09.2019 в 16:20. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 5,976
|
![]() |
![]() |
![]() |
![]() |
|
Опции темы | |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где посмотреть список ошибок, возвращаемых PathFileExistsA? | Korshi | Win Api | 16 | 30.04.2019 19:42 |
Проблема с InternetReadFile. | FULEREN | Общие вопросы C/C++ | 7 | 21.12.2014 11:56 |
InternetReadFile не читает архивы | questy | Win Api | 3 | 24.08.2013 11:03 |
Просуммировать последовательность байтов в цикле | deman_sibir | Assembler - Ассемблер | 0 | 10.09.2012 18:04 |
Последовательность из 6 символов (байтов), размещённых в сегменте данных, записать в обратном порядке | Batyrin | Assembler - Ассемблер | 2 | 03.06.2011 15:48 |