1

Тема: AHK: Получение данных со страницы сайта в переменную

Здраствуйте, снова прошу помощи. Скажите пожалуйста как через WinHTTP получить весь текст со страницы в интернете? Ссылка имеет примерно такой вид: site.ru/file.txt, открывается текстовый документ. Напишите пожалуйста исходный код. Заранее спасибо.

2

Re: AHK: Получение данных со страницы сайта в переменную

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://site.ru/file.txt")
HTTP.Send()
MsgBox, % HTTP.ResponseText
Как сказал мой дед - Я твой дед

3

Re: AHK: Получение данных со страницы сайта в переменную

sergeiplugatyr пишет:
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://site.ru/file.txt")
HTTP.Send()
MsgBox, % HTTP.ResponseText

Спасибо, помогло! Но появился новый вопрос, при получении русских букв, они становятся иероглифами, как это исправить?

4

Re: AHK: Получение данных со страницы сайта в переменную

По какой например ссылке.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: YMP, 2014-06-07 16:24:16)

Re: AHK: Получение данных со страницы сайта в переменную

Проблема в кодировке, видимо. Не знаю, можно ли её как-то явно задать. А "через дыру в заборе" можно так (для кодировки utf-8):


HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://site.ru/file.txt")
HTTP.Send()
Body := HTTP.ResponseBody
pArr := ComObjValue(Body)
cBytes := NumGet(pArr+0, A_PtrSize = 8? 24:16, "uint")
pText := NumGet(pArr+0, A_PtrSize = 8? 16:12, "ptr")
MsgBox, % StrGet(pText, cBytes, "utf-8")

6

Re: AHK: Получение данных со страницы сайта в переменную

Вот у меня тоже что-то не получается.
Что упустил?

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "https://trust-host.ru/")
HTTP.SetRequestHeader("Accept-Language", "ru")
HTTP.SetRequestHeader("Accept-Charset","Windows-1251")
HTTP.setRequestHeader("Content-Language", "ru")
HTTP.setRequestHeader("Content-Charset", "Windows-1251")
HTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251")
HTTP.Send()
MsgBox, % HTTP.ResponseText

7 (изменено: tuma4ok, 2014-06-07 15:39:53)

Re: AHK: Получение данных со страницы сайта в переменную

serzh82saratov пишет:

По какой например ссылке.

По такой же.

8

Re: AHK: Получение данных со страницы сайта в переменную

Ни что из выше сказанных не помогло! Либо ничего нету, либо опять иероглифы.

9

Re: AHK: Получение данных со страницы сайта в переменную

Дело в том, что здесь:


HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://site.ru/file.txt")
HTTP.Send()
MsgBox, % HTTP.ResponseText

у меня нормальные русские буквы.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Получение данных со страницы сайта в переменную

tuma4ok пишет:

Ни что из выше сказанных не помогло! Либо ничего нету, либо опять иероглифы.

Какие именно иероглифы? Показать можете?

11 (изменено: tuma4ok, 2014-06-07 16:18:28)

Re: AHK: Получение данных со страницы сайта в переменную

Вот такие иероглифы. Если поможет, вот ссылка на файл http://vkontackte.tk/NoDelete/base.php

12

Re: AHK: Получение данных со страницы сайта в переменную

А если так?


HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://site.ru/file.txt")
HTTP.Send()
Body := HTTP.ResponseBody
pArr := ComObjValue(Body)
cBytes := NumGet(pArr+0, A_PtrSize = 8? 24:16, "uint")
pText := NumGet(pArr+0, A_PtrSize = 8? 16:12, "ptr")
MsgBox, % StrGet(pText, cBytes, "cp1252")

13

Re: AHK: Получение данных со страницы сайта в переменную

YMP пишет:

А если так?


HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", "http://site.ru/file.txt")
HTTP.Send()
Body := HTTP.ResponseBody
pArr := ComObjValue(Body)
cBytes := NumGet(pArr+0, A_PtrSize = 8? 24:16, "uint")
pText := NumGet(pArr+0, A_PtrSize = 8? 16:12, "ptr")
MsgBox, % StrGet(pText, cBytes, "cp1252")

Ты великолепен! Все работает как надо! Спасибо большое!

14

Re: AHK: Получение данных со страницы сайта в переменную

Тогда здесь крякозябры Url = http://www.microsoft.com.
Может как то так узнавать кодировку:


Url = http://site.ru/file.txt
Url = http://www.script-coding.com/WSH.html
Url = http://www.microsoft.com
 
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1") 
HTTP.Open("GET", Url) 
HTTP.Send()   

Body := HTTP.ResponseBody
pArr := ComObjValue(Body)
cBytes := NumGet(pArr+0, A_PtrSize = 8? 24:16, "uint")
pText := NumGet(pArr+0, A_PtrSize = 8? 16:12, "ptr") 

RegexMatch(HTTP.ResponseText, "`nmi)<meta.*?charset=""*(?<Set>.*?)"".*?>", Char)   
Encode := CharSet = "windows-1251" ? "cp1251" : CharSet

MsgBox, % StrGet(pText, cBytes, Encode)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Получение данных со страницы сайта в переменную

Ну, если нужен универсальный код, то надо узнавать. Странно вообще-то, что там выше cp1252 сработало. Если русские буквы, то должно быть cp1251.