Что нового

Контакт: сборщик Комментариев в альбоме

Davyd

Новичок
Сообщения
7
Репутация
1
AutoIt: v3.3.8.1
Версия: 1.0

Категория: Интернет

Описание: Получает комментарии в альбоме для всех фотографий Вконтакте

Код/Пример:
Код:
#include <array.au3>

;_html( _coment())  ; на выходе 1.html
;_exel(_coment())	; на выходе 1.csv


Func _coment() ; Собирает коментарии всех фотографий в альбоме на Выходе Массив содержащий все коментарии  
  $albom = InputBox("Вопрос", "введите альбом"&@CRLF&"album-17163262_151565718", "album-17163262_151565718", "", -1, -1, 0, 0)
   Dim $id[1]=[1]

Global $id,$id1
   $sHTML = BinaryToString(InetRead("http://vk.com/"&$albom), 4)


$Response = $sHTML
$cont=StringRegExp($Response,'count:(.*?)\,',1)
		 if UBound($cont)<1 then 
			MsgBox(0,"","Error!")
			exit 
		 EndIf
		 
for $i=0 to $cont[0] step 18
   ToolTip("скачиваю осталось "&$cont[0]-$i)
   $sHTML = BinaryToString(InetRead("http://vk.com/"&$albom&"?"&"act=comments&al=1&offset="&string($i)&"&part=1"), 1)

   $Response = $sHTML
   $response=StringRegExpReplace($response,"\n"," ")
   $response=StringRegExpReplace($response,";",".")
   $id1=StringRegExp($Response,'(<div class="fl_l pv_thumb.*?div class="clear_fix pv_comment)',3)

	for $j=0 to UBound($id1)-1
	   _arrayadd($id,$id1[$j])
	Next
Next


$k=UBound($id)-1
   
   for $j=$k-1 to 0 step -1
	  for $j1=$K-1 to 0 step -1
		 if $j<>$j1 and $id[$j]=$id[$j1] then 
			_arraydelete($id,$j)
             $k=UBound($id)-1
			 ToolTip("удаляю "&$k-$cont[0]) 
			ExitLoop
		 EndIf
	  Next
	
	Next
ToolTip("") 
_arraydelete($id,0)

dim $kom[UBound($id)][7]
for $i=0 to UBound($id)-1
   $arv=StringRegExp($id[$i],'<img src="(.*?)".*?<div class="fl_l pv_comm">     <a href="(.*?)" .*?class="name">(.*?)</a>     <div class="pv_commtext">(.*?)</div>.*?<span class="fl_l">(.*?)<.*?a class="pv_photo_thumb fl_r" href="(.*?)" .*?<img src="(.*?)"',3)
   for $j=0 to 6
	  $kom[$i][$j]=$arv[$j]
   Next
Next
_arraydisplay($kom)
Return $kom
EndFunc
   


Func _exel($kom) ; Создает на выходе (почти) Эксел'евский файл
;~ ******************************
$st=""
FileClose(FileOpen("1.csv", 2))

For $i=0 To UBound($kom)-1
   For $j=0 To 6
	  $st&=$kom[$i][$j]&";"
   Next
   $st&=@CRLF
   FileWrite("1.csv",$st)
   $st=""
Next
EndFunc

Func _html($kom)  ;Функция создаст Упорядочит все коментарии альбома в HTML формате 	
   _ArraySort($kom,0,0,0,5)
$st=""
$j=2
$html1=""
$html="<html> <body> <table border=1>"
for $i=1 to UBound($kom,1)-1
   ;ConsoleWrite($kom[$i][0]&" "&$kom[$i][1]&" "&$kom[$i][2]&" "&$kom[$i][3]&" "&$kom[$i][4]&" "&$kom[$i][5]&" "&$kom[$i][6]&" "&@CRLF)
   if $i=1 then 
	  $html1&="<td><a href=http://vk.com"&$kom[$i-1][1]&"><img src="&$kom[$i-1][0]&">"&$kom[$i-1][2]&"</a></td>"&@crLF
		 $html1&="<td>"&$kom[$i-1][3]&"</td>"&@CRLF
		 $html1&="<td>"&$kom[$i-1][4]&"</td></tr>"&@crLF
		 endif 
	  
   if $st=$kom[$i][5] then 
	     $html1&="<td><a href=http://vk.com"&$kom[$i][1]&"><img src="&$kom[$i][0]&">"&$kom[$i][2]&"</a></td>"&@crLF
		 $html1&="<td>"&$kom[$i][3]&"</td>"&@CRLF
		 $html1&="<td>"&$kom[$i][4]&"</td></tr>"&@crLF
		 $j+=1 
	  else 
		 $st=$kom[$i][5]
		 $html&="<tr> <td rowspan="&$j&"><a href=http://vk.com"& $kom[$i-1][5]&"><img src="&$kom[$i-1][6]&"></a></td><tr>"&@crlf&$html1

		 $html1=""
		 
		 $html1&="<td><a href=http://vk.com"&$kom[$i][1]&"><img src="&$kom[$i][0]&">"&$kom[$i][2]&"</a></td>"&@crLF
		 $html1&="<td>"& $kom[$i][3]&"</td>"&@crLF
		 $html1&="<td>"&$kom[$i][4]&"</td></tr>"&@crLF
		 $j=2
EndIf

Next
$html&="</table> </body> </html>"
 
FileWrite(FileOpen("1.html", 2),$html)
EndFunc

Файл: kontakt InetRead.au3

История версий: 1.0

Источник: autoit-script.ru
Автор(ы): Davyd
p.s: не судите строго Это моя первая опубликованная работа
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Re: Контакт: сборщик всех Комментариев в альбоме

Davyd
Почитайте http://autoit-script.ru/index.php/topic,9.0.html, публикация не соответствует.
 
Верх