Astel064
Помог мой пост, ставь +!
- Сообщения
- 276
- Репутация
- 51
Получаем в виде массива:Astel064 сказал(а):нужно получить в виде текста (или массива )
#include <Array.au3>; for _ArrayDisplay
Local $sWeather = BinaryToString(InetRead('http://auto.sarbc.ru/webcams//weather.json'))
ConsoleWrite($sWeather&@CRLF)
Local $aWeather[3]
Local $oSc = ObjCreate("ScriptControl")
If Not IsObj($oSc) Then
MsgBox(16, "error", "Error create object ScriptControl")
Exit
EndIf
$oSc.Language = "JavaScript"
$oSc.Eval('var w = eval(''('&$sWeather&')'');')
$aWeather[0] = $oSc.Eval('w.term;')
$aWeather[1] = $oSc.Eval('w.hum;')
$aWeather[2] = $oSc.Eval('w.press;')
$oSc = 0
_ArrayDisplay($aWeather)
;...
$oJson = $oSc.Eval('('& $sWeather &')')
ConsoleWrite(StringFormat('Term: %s\n', $oJson.term))
ConsoleWrite(StringFormat('Hum: %s\n', $oJson.hum))
ConsoleWrite(StringFormat('Press: %s\n', $oJson.press))
;...
А какие?Garrett сказал(а):P.S. В этом методе есть свои "подводные камни". ;)
;~ #include <Array.au3>
;~ HttpSetProxy(1)
Global $aWeather = _GetCurrentWeatherSaratov()
If @error Then Exit 13
;~ _ArrayDisplay($aWeather)
For $i = 0 To UBound($aWeather) - 1
ConsoleWrite($aWeather[$i] & @LF)
Next
#cs
При успехе вернет одномерный массив размером в зависимости от $i_Flag =
-1 - 3 элемента: температура, влажность и давление;
0 - 1 элемент: температура;
1 - 1 элемент: влажность;
2 - 1 элемент: давление;
другой - 1 элемент: error.
При ошибке: 1 элемент: error.
#ce
Func _GetCurrentWeatherSaratov($i_Flag = -1)
Local $s_Read, $a_Search[3][3] = [['term', 'Температура:', Chr(176) & 'C'],['hum', 'Влажность:'],['press', 'Давление:']], $a_Ret[1]
$s_Read = InetRead('http://auto.sarbc.ru/webcams//weather.json', 17)
If @error Then
$a_Ret[0] = 'error'
Return $a_Ret
EndIf
$s_Read = BinaryToString($s_Read)
Switch $i_Flag
Case -1
ReDim $a_Ret[3]
For $i = 0 To 2
$a_Ret[$i] = StringRegExpReplace($s_Read, '.*[''"]' & $a_Search[$i][0] & '[''"]:\h[''"]([\d\.,%]+)[''"].*', '$1')
If @extended <> 1 Then
$a_Ret[$i] = 'error'
Else
$a_Ret[$i] = StringFormat('%-13s\t%s%s', $a_Search[$i][1], $a_Ret[$i], $a_Search[$i][2])
EndIf
Next
Case 0 To 2
$a_Ret[0] = StringRegExpReplace($s_Read, '.*[''"]' & $a_Search[$i_Flag][0] & '[''"]:\h[''"]([\d\.,%]+)[''"].*', '$1')
If @extended <> 1 Then
$a_Ret[0] = 'error'
Else
$a_Ret[0] = StringFormat('%-13s\t%s%s', $a_Search[$i_Flag][1], $a_Ret[0], $a_Search[$i_Flag][2])
EndIf
Case Else
$a_Ret[0] = 'error'
EndSwitch
Return $a_Ret
EndFunc ;==>_GetCurrentWeatherSaratov
Astel064 сказал(а):Уважаемый, а как Вы смогли определить, что сведения о погоде именно по этому адресу
Да легко!Astel064 сказал(а):Как он это определил?
GET /webcams//weather.json HTTP/1.1
Host: auto.sarbc.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Referer: http://auto.sarbc.ru/webcams/
Cookie: _ga=GA1.2.424438084.1395582407; PHPSESSID=d8ojvfu1fotnmq0prjui7lp3r4; _ym_visorc_11490884=w
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 24 Mar 2014 09:08:27 GMT
Content-Type: application/octet-stream
Content-Length: 49
Last-Modified: Fri, 21 Mar 2014 05:16:15 GMT
Connection: keep-alive
Accept-Ranges: bytes
{"term": "4.5", "hum": "50,0%", "press": "744,8"}
А поиском (ctrl + f) пользоваться не пробовал? Можно было поискать по ключевому слову "weather".Astel064 сказал(а):Просто я когда отрыл исходник страницы - у меня глаза разбежались в разные стороны от количества ссылок на странице, и я просто не смог проверить их все
function reloadWeather()
{
var url = 'http://auto.sarbc.ru/webcams//weather.json';
$.getJSON(url, function(weather)
{
$("em.term").text(weather.term);
$("em.press").text(weather.press);
$("em.hum").text(weather.hum);
});
var weatherTimeout = setTimeout('reloadWeather()', 10000);
}
...
$(document).ready( function(){
reloadWeather();
});
<div class="title">Погода онлайн</div>
<div class="menu-content">
<ul>
<li>Температура: <em class="term">-</em>°C</li>
<li>Давление: <em class="press">-</em></li>
<li>Влажность: <em class="hum">-</em></li>
</ul>
</div>