Что нового

[Сеть, интернет] Правильный парсинг элементов страницы

rollex

Новичок
Сообщения
66
Репутация
1
Версия AutoIt: 3.3.6.1

Описание: Есть сайт:
[box title=Ссылка]http://www.lardi-trans.com/reliability_zone/show_responses.php?action=firm_to&rz_firm=666[/box]
На нем есть отзывы на разные фирмы. Мне нужно вывести (динамично) в окно программы подробную статистику (сколько положительных, сколько отрицательных, принадлежность какого либо количества отзывов к одной из фирм - обычный подсчет, различное отсеивание)

Примечания: Прошу хотя бы подтолкнуть к правильному решению задачи, дать советы.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
rollex,
Вам через IE надо?
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
madmasles
Без разницы, можно и через IE. Мне главное спарсить нужные элементы и занести их в многомерные массивы, либо еще куда, для последующего управления полученной информацией. Спасибо.
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
Не уже ли никто не подтолкнет даже?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
rollex,
Попробуйте так. Без анализа.
Код:
#include <Array.au3>

$iCountPlus = 0
$iCountMinus = 0
$iCount = 0
$sURL = 'http://www.lardi-trans.com/reliability_zone/show_responses.php?action=firm_to&rz_firm=666'
$sSourse = InetRead($sURL, 17)
If @error Then
	MsgBox(16, 'Error', 'InetRead')
	Exit
EndIf

$sSourse = BinaryToString($sSourse)
$sName = StringRegExpReplace(StringRegExpReplace($sSourse, '(?s).*Title="Общая информация"><b>(.*?)</td></tr>.*', '$1'), '<.*?>', '')
$aTemp = StringRegExp($sSourse, '(?s)<tr><td>(.*?)</td>\r?\n\t</tr>', 3)
If @error Then
	MsgBox(16, 'Error', 'StringRegExp')
	Exit
EndIf
Dim $aResult[UBound($aTemp) + 1][2]
For $i = 1 To UBound($aTemp)
	$aTempCell = StringRegExp($aTemp[$i - 1], '(?s)<table.*?>(.*?)</table>', 3)
	If Not @error Then
		$iCount += 1
		$iCountPlus += 1
		For $j = 0 To UBound($aTempCell) - 1
			$aResult[$iCount][$j] = StringRegExpReplace($aTempCell[$j], '<.*?>', '')
			$aResult[$iCount][$j] = StringRegExpReplace($aResult[$iCount][$j], '[\r\n\t\|]', ' ')
			$aResult[$iCount][$j] = StringReplace($aResult[$iCount][$j], '–', '-')
			$aResult[$iCount][$j] = StringReplace($aResult[$iCount][$j], ' ', ' ')
			$aResult[$iCount][$j] = StringStripWS($aResult[$iCount][$j], 7)
			$aResult[$iCount][$j] = StringRegExpReplace($aResult[$iCount][$j], '^\d+\s(.*?)$', '$1')
			If $j Then $iCountMinus += 1
		Next
	EndIf
Next
If $iCount Then
	ReDim $aResult[$iCount + 1][2]
	$aResult[0][0] = $iCountPlus
	$aResult[0][1] = $iCountMinus
	_ArrayDisplay($aResult, $sName)
Else
	MsgBox(16, 'Error', 'Error')
EndIf
 
Верх