Помощник
|
Нужен программист ajax + php для небольшой работы |
Winlook
|
Сообщение
#1
|
||
|
|
||
|
|||
ZhukV |
22.11.2010, 13:09;
Ответить: ZhukV
Сообщение
#2
|
|
Skype -- zhuk-vitaliy
Аська снизу. Примеры готовых грабингов могу показать. |
|
|
ZhukV |
22.11.2010, 16:14;
Ответить: ZhukV
Сообщение
#3
|
|
парсер я сам делать не буду, причину знаеш, но намекнуть, как его нужно делать, могу.
Припустим, что форум находится по адресу: http://domain.com Отсюда, можно сказать, что страница просмотра всех сообщений юзера выглядит так: http://domain.com/forum/user/{$number_user}/post/all/ , где $number_user - номер юзера. Теперь, нужно подключится и достать список всех страниц. Для подключение, можеш использовать: [php] class CUrl{ public $url = ''; public $cookie = 'PHPSESSID=ea959c4515a4319596d5b7072527f4d0; cy-pr_FORUM_GUEST=0-1290422286; __utma=124551960.2113362369.1290418677.1290418677.1290418677.1; __utmb=124551960.19.10.1290418677; __utmc=124551960; __utmz=124551960.1290418677.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); cy-pr_FORUM_GUEST=0-1290422286; cy-pr_FORUM_GUEST_TID=2568-1290422331%2F2439-1290423549; cy-pr_FORUM_GUEST_TID=2568-1290422331%2F2439-1290423549; cy-pr_LOGIN=Lich; cy-pr_SOUND_LOGIN_PLAYED=Y'; public $browser = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)'; protected $CUrlError; private $result ; private function setErrorCUrl($code = '', $text = '', $type = E_USER_NOTICE){ $view_error = true; if($code === true){ $type = $text; $code = curl_errno(); $text = curl_error(); } if(!$text || !$type){ return !trigger_error('Not parameters', E_USER_WARNING); } $this -> CUrlError = array('CODE' => $code, 'TEXT' => $text, 'TYPE' => $type, 'ERROR' => true); if($view_error == true){ trigger_error($text, $type); } return true; } protected function isErrorCUrl(){ return $this -> CUrlError['ERROR']; } public function getResult(){ return $this -> result; } public function init(){ $all = get_loaded_extensions(); if(!in_array('curl', $all)){ $this -> setErrorCUrl('', 'Not libary "php_curl.dll". Please initialization libary.', E_USER_ERROR); } if(!$this -> url){ return !$this -> setErrorCUrl('', 'Not url connected!!! Please write url.', E_USER_WARNING); } $curl = curl_init($this -> url); if(!is_resource($curl)){ return !$this -> setErrorCUrl('', 'CUrl no resource.', E_USER_WARNING); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if($this -> browser){ curl_setopt($curl, CURLOPT_USERAGENT, $this -> browser); } if($this -> cookie){ if(is_array($this -> cookie)){ foreach($this -> cookie as $k => $v){ $temp .= "{$k}={$v}; "; } }elseif(is_string($this -> cookie)){ $temp = $this -> cookie; } else{ return $this -> setErrorCUrl('', 'Bad parametr cookie.', E_USER_WARNING); } curl_setopt($curl, CURLOPT_COOKIE, $temp); } $out = curl_exec($curl); if(!$out){ return !$this -> setErrorCUrl('', 'Not result CUrl'); } $this -> result = $out; curl_close($curl); return $this -> result; } function __construct($start = false){ if($start === true){ $this -> init(); } } } [/php]Здесь сразу переданы куки пользователя и браузер мозилла. Вот прмер: [php] $CUrl = new CUrl(); $CUrl -> url = "http://domain.com/forum/user/{$number_user}/post/all/"; $CUrl -> init(); echo $CUrl -> getResult(); [/php]Теперь нужно достать список всех страниц. Вот функция: [php] $number_user = '20512'; function getAllPageView($text){ global $number_user; $pattern = '/<a href="\/forum\/user\/' . $number_user . '\/post\/all\/\?PAGEN_1=(\d+)" class="">2<\/a>/Uis'; preg_match_all($pattern, $text, $m); $all = array_unique($m[1]); return $all; } //Обезательно должен быть номер юзера. [/php]Теперь, таким же макаром подключаешся вот по такой ссылке: /forum/user/$number_user/post\/all/?PAGEN_1=$page Думаю объснять это не нужно. Далее сложиваеш регулярку для парсера сообщений, после чего вытаскиваеш ссылку и номер поста. Вот припустим ссылка: http://domain.com/forum/f35/t2439/m26733#message26733 Здесь: http://domain.com/forum/f35/t2439/m26733 -- ссылка message26733 -- пост Далее, опять подключаешся ко всем найденным ссылкам и делаеш парсер именно контейнера и id=пост. После того, там должен быть припустим такой код: RatingVoting('FORUM_POST', '26635', '1290427971', 'plus') Вытаскиваеш 2 и 3 атрибут функции.И отправляеш на http://domain.com/bitrix/components/bitrix...TION=voteAction Где: ENTITY_TYPE_ID - второй атрибут функции ENTITY_ID - третий атрибут функции VOTE_ACTION - plus|minus -- что делать. В результате получиш данные в формате json, далаеш парсер и узнаеш, прошло или нет. -------------------------------------------------------------- Если нужно будет еще что, спрашивай. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Обучение Email Рассылкам + Софт Для Автоматизации (100к в сутки с сервера) | 10 | zennoboss | 4599 | Сегодня, 5:20 автор: Skyworker |
|
Посоветуйте массажер для спины и шеи | 9 | Boymaster | 873 | Вчера, 13:56 автор: Vmir |
|
Как вы отдыхаете от работы за компом | 151 | adw-kupon.ru | 19823 | Вчера, 13:52 автор: Vmir |
|
Какой % отказов нормален для сайта? | 14 | Aloof | 3376 | Вчера, 13:50 автор: Vmir |
|
Имитация работы залог успеха? | 21 | metvekot | 1483 | Вчера, 11:51 автор: Skyworker |
Текстовая версия | Сейчас: 24.4.2024, 5:41 |