<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Помощь в парсинге сайта...
29.01.2012 15:30:02 Помощь в парсинге сайта... Сообщение #1
Neo.LoL

Neo.LoL

Продвинутый

Продвинутый

Дата регистрации:
15.11.2011 15:22:16

Сообщений: 56

Ребята нужна помощь! Я хочу пропарсить сайт mover.uz, вот php код как делали с youtube.com:

<?php
/*
=====================================================
DleMovie (Module for CMS DataLife Engine)
-----------------------------------------------------
Copyright (c) 2011 Alexander Ahminenko
=====================================================
Данный код защищен авторскими правами
-----------------------------------------------------
E-Mail, ICQ: [email protected], 681216
=====================================================
*/
if ( ! defined ( 'DATALIFEENGINE' ) ) {
die( 'Hacking attempt!' );
}
class DleMovieYoutube {
private $main = false;
private $config = array( );
private $authorized = false;
private $authuser = false;
private $authhash = false;

public function __construct( $main ) {
$this->main = $main;
$this->config = $main->config;
return true;
}
public function getVideoById( $id ) {
$params = array( 'alt' => 'json', 'q' => $id );
$headers = array( 'X-GData-Key' => 'key=' . $this->config['youtube_key'], 'GData-Version' => '2' );
$query = $this->main->curlQuery( 'http://gdata.youtube.com/feeds/api/videos', $params, 'GET', array( ), $headers, $response );
$object = json_decode( $response, true );
$video = $this->videoRowParse( $object['feed']['entry'][0] );
if ( $video !== false ) return $video;
return false;
}
public function getVideosByUserChannel( $user, $start, $limit ) {
$params = array( 'alt' => 'json', 'author' => $user, 'max-results' => $limit, 'start-index' => $start );
$headers = array( 'X-GData-Key' => 'key=' . $this->config['youtube_key'], 'GData-Version' => '2' );
$query = $this->main->curlQuery( 'http://mover.uz/feeds/api/videos', $params, 'GET', array( ), $headers, $response );
$object = json_decode( $response, true );
$i = 1;
if ( count( $object['feed']['entry'] ) > 0 ) {
foreach ( $object['feed']['entry'] as $row ) {
$video = $this->videoRowParse( $row );
if ( $video !== false ) {
$data[$i] = $video;
$i ++;
}
}
} else return false;
return $data;
}
# Channel: most_recent, most_viewed, top_rated, most_discussed, top_favorites, recently_featured, most_responded, most_linked
public function getVideosByStdChannel( $channel, $start, $limit ) {
$params = array( 'alt' => 'json', 'max-results' => $limit, 'start-index' => $start );
$headers = array( 'X-GData-Key' => 'key=' . $this->config['youtube_key'], 'GData-Version' => '2' );
$query = $this->main->curlQuery( 'http://gdata.mytube.uz/feeds/api/standardfeeds/' . $channel, $params, 'GET', array( ), $headers, $response );
$object = json_decode( $response, true );
$i = 1;
if ( count( $object['feed']['entry'] ) > 0 ) {
foreach ( $object['feed']['entry'] as $row ) {
$video = $this->videoRowParse( $row );
if ( $video !== false ) {
$data[$i] = $video;
$i ++;
}
}
} else return false;
return $data;
}
# Category: all, auto, comedy, education, entertainment, film, howto, music, news, people, animals, tech, sports, travel
# Order: relevance (default = NULL), published, viewCount
public function getVideosFromCategory( $category, $query, $order, $start, $limit ) {
$params = array( 'alt' => 'json', 'orderby' => $order, 'max-results' => $limit, 'start-index' => $start );
$headers = array( 'X-GData-Key' => 'key=' . $this->config['youtube_key'], 'GData-Version' => '2' );
$category = ucfirst( strtolower( $category ) );
if ( $category == 'All' or empty( $category ) ) $location = 'http://gdata.youtube.com/feeds/api/videos';
else $location = 'http://gdata.youtube.com/feeds/api/videos/-/{http://gdata.youtube.com/schemas/2007/categories.cat}' . $category;
$query = $this->main->curlQuery( 'http://gdata.youtube.com/feeds/api/standardfeeds/' . $channel, $params, 'GET', array( ), $headers, $response );
$object = json_decode( $response, true );
$i = 1;
if ( count( $object['feed']['entry'] ) > 0 ) {
foreach ( $object['feed']['entry'] as $row ) {
$video = $this->videoRowParse( $row );
if ( $video !== false ) {
$data[$i] = $video;
$i ++;
}
}
} else return false;
return $data;
}
private function videoRowParse( $row ) {
$data = array( );
if ( ! empty( $row['title']['$t'] ) ) {
$data['title'] = trim( $row['title']['$t'] );
$data['descr'] = trim( str_replace( "\n", '<br />', $row['media$group']['media$description']['$t'] ) );
$data['duration'] = trim( $row['media$group']['yt$duration']['seconds'] );
$data['screen']['url'] = trim( $row['media$group']['media$thumbnail'][0]['url'] );
$data['screen']['width'] = trim( $row['media$group']['media$thumbnail'][0]['width'] );
if ( ! empty( $row['media$group']['media$thumbnail'][1]['url'] ) ) {
$data['screen-hq']['url'] = trim( $row['media$group']['media$thumbnail'][1]['url'] );
$data['screen-hq']['width'] = trim( $row['media$group']['media$thumbnail'][1]['width'] );
}
} else return false;
return $data;
}
public function authorization( ) {
$params = array( 'accountType' => 'HOSTED_OR_GOOGLE', 'Email' => $this->config['youtube_email'], 'Passwd' => urlencode( $this->config['youtube_passwd'] ), 'service' => 'youtube', 'source' => 'dlemovie' );
$query = $this->main->curlQuery( 'https://www.google.com/youtube/accounts/ClientLogin', $params, 'POST', array( ), array( 'Content-Type' => 'application/x-www-form-urlencoded' ), $response );
if ( substr_count( $response, 'Auth' ) > 0 and substr_count( $response, 'YouTubeUser' ) > 0 ) {
$response = trim( str_replace( "\n\r", "\n", $response ) );
$authdata = explode( "\n", $response );
$authhash = trim( str_replace( 'Auth=', '', $authdata[0] ) );
$authuser = trim( str_replace( 'YouTubeUser=', '', $authdata[1] ) );
$this->authuser = $authuser;
$this->authhash = $authhash;
$this->authorized = true;
return true;
} else {
$this->authuser = false;
$this->authhash = false;
$this->authorized = false;
return false;
}
}
}
$youtube = new DleMovieYoutube( $dlemovie );
?>

Мне нужно сделать тоже самое только с сайтом mover.uz помогите пожалуйста!
Профиль
29.01.2012 15:33:56 Помощь в парсинге сайта... Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

И зачем этот код? Он для другого сайта, у Вас он будет совсем другой.
Первым делом определитесь, что Вы хотите парсить. "Парсить весь сайт" - проще всего. Но Вы же хотите спарсить что-то конкретное, например, какие-нибудь новости, статьи. Для этого изучайте структуру HTML-кода данного сайта, смотрите, где требуемые элементы и где они находятся. В соответствии с этим Вы далее пишите парсер, где загружаете полностью всю страницу, а затем выделяете конкретную часть. Вот это выделение делается с помощью регулярных выражений, а сами регулярные выражения Вам и нужно написать в зависимости от того, что Вы хотите и какова структура HTML-кода на сайте.
Профиль
29.01.2012 15:47:24 Помощь в парсинге сайта... Сообщение #3
Neo.LoL

Neo.LoL

Продвинутый

Продвинутый

Дата регистрации:
15.11.2011 15:22:16

Сообщений: 56

вообщем вот что у меня получилось:
http://minecraft.uz/?do=video&act=upload
Только есть одна ошибка, добавлении видео через Mover.uz не получается... Скажите где нужно конкретно посмотреть?
Профиль
29.01.2012 15:52:53 Помощь в парсинге сайта... Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Вы хотите, чтобы пользователи загружали видео на Ваш сайт, но при этом оно бы и добавлялось сразу на mover.uz? Если так, то это уже очень сложная работа. Нужно, во-первых, иметь аккаунт на этом сайте, далее нужно через PHP авторизовываться там, затем загружать видео, посылая соответствующие работы. Работы здесь даже специалисту будет очень много. Рекомендую использовать cURL, он хоть немного облегчит задачу.
Профиль
29.01.2012 15:56:00 Помощь в парсинге сайта... Сообщение #5
Neo.LoL

Neo.LoL

Продвинутый

Продвинутый

Дата регистрации:
15.11.2011 15:22:16

Сообщений: 56

Нет мне нужно, чтобы загружали на Mover.uz, а на сайте просто разполагалось в виде Фрейма и не более
Профиль
29.01.2012 15:57:59 Помощь в парсинге сайта... Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

А люди должны указывать ссылку на видео? Если так, то здесь парсинг вообще не нужен.
Профиль
29.01.2012 15:58:38 Помощь в парсинге сайта... Сообщение #7
Neo.LoL

Neo.LoL

Продвинутый

Продвинутый

Дата регистрации:
15.11.2011 15:22:16

Сообщений: 56

Ну да ))) Извените Михаил я просто как обычно усложняю задачу) Скажите как сделать проще?
Профиль
29.01.2012 16:00:26 Помощь в парсинге сайта... Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Посмотрите на код добавления видео на mover.uz. Возьмите любое видео, там где-то в коде должна быть ссылка на него. И Ваша задача будет просто заменять эту ссылку на ту, что укажет пользователь, а весь остальной код оставлять прежним.
Профиль
29.01.2012 16:05:56 Помощь в парсинге сайта... Сообщение #9
Neo.LoL

Neo.LoL

Продвинутый

Продвинутый

Дата регистрации:
15.11.2011 15:22:16

Сообщений: 56

Понимаете Михаил, мне нужно чтобы человек добавил видео на Mover.uz, а потом мог добавить его на сайт Minecraft.uz !
Профиль
29.01.2012 16:08:24 Помощь в парсинге сайта... Сообщение #10
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Я так и понял, и как это сделать, уже написал.
Профиль