Здравствуйте.
Есть такой код:
Но у меня не получается спарсить в двумерный массив/переместить содержимое того,что я напарсил в двумерный массив.В двумерном массиве нужно только два поля для каждого героя(парсит отлично),а именно:его имя,дробное число.
Вот и вся проблема.
Заранее благодарен за ответы.
Есть такой код:
Код:
#include <Array.au3>
Global $aHero_list[1][1]
$sRequest = 'GET /heroes HTTP/1.1' & @CRLF ;Request-строка, параметры GET-запроса
$sRequest &= 'Host: dotabuff.com' & @CRLF
$sRequest &= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'& @CRLF
$sRequest &= 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36' & @CRLF
$sRequest &= 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4' & @CRLF & @CRLF
$sData=_SendPacket($sRequest,"dotabuff.com",80,2)
ConsoleWrite($sData&@CRLF)
$Hero_list=StringRegExp($sData,'<div class="name">([0-9a-zA-Z_ ]{1,})</div>',3)
ReDim $aHero_list[1][UBound($Hero_list)]
For $i=0 To UBound($Hero_list)-1
$aHero_list[1][$i]=$Hero_list[$i]
ConsoleWrite($Hero_list[$i]&@CRLF)
Next
Func _SendPacket($sRequest,$sHost,$iPort=80,$iReturn=1) ; для сокращения кода и приведение его в более удобочитаемый вид
;1 - заголовки, 2 - тело, 3 - всё.
If TCPStartup() = 0 Then ;запускаем TCP/UDP-службы
return @error
EndIf
$sIP = TCPNameToIP($sHost) ;получаем ip-адрес
If @error Then
return @error
EndIf
$iSocket = TCPConnect($sIP, $iPort) ;соединяемся с сервером
If @error Then
return @error
EndIf
TCPSend($iSocket, $sRequest) ;отправляем сообщение
If @error Then
return @error
EndIf
$sData = Binary('')
$iTimer = TimerInit() ;запускаем таймер
Do
$sBuffer = TCPRecv($iSocket, 1024, 1)
$iError = @error
If $sBuffer Then
$sData &= BinaryToString($sBuffer, 4)
$iTimer = TimerInit() ;обнуляем таймер
EndIf
Until $iError <> 0 Or TimerDiff($iTimer) > 5000 ;если при получении сообщения произошла ошибка (данные получены, соединение закрыто) или в течении 5 секунд ничего не было получено, выход из цикла
TCPCloseSocket($iSocket)
TCPShutdown()
if($iReturn = 3) Then
Return $sData
Else
$aData = StringRegExp($sData, '(?s)^(.+?)[\r\n]{4}(.*)$', 3) ; разделяем заголовки и тело ответа
If Not IsArray($aData) Then
return @error
Else
Switch $iReturn
Case 1
Return $aData[0]
Case 2
Return $aData[1]
EndSwitch
EndIf
EndIf
EndFunc;==> _SendPacket
Но у меня не получается спарсить в двумерный массив/переместить содержимое того,что я напарсил в двумерный массив.В двумерном массиве нужно только два поля для каждого героя(парсит отлично),а именно:его имя,дробное число.
Вот и вся проблема.
Заранее благодарен за ответы.