PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: с помощью snoopy и регулярок
Поиск в теме | Версия для печати
Viper
Отправлено: 22 Октября, 2009 - 14:35:55
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007
Откуда: Симферополь
Помог: 98 раз(а)
Собстно задача проста(почти). Нужно получить по названию фильма, его описание.
PHP:
скопировать код в буфер обмена
include ( 'class.parse.php' ) ;
$search_url = 'http://www.kinopoisk.ru/index.php?kp_query=' ;
$movie_url = 'http://www.kinopoisk.ru/level/1/film/' ;
$url_start = '<a class="all" href="/level/1/film/' ;
$url_end = '/sr/1/">' ;
$snoopy = new Snoopy;
$snoopy -> proxy_host = '10.30.20.2' ;
$snoopy -> proxy_port = '3128' ;
$snoopy -> user = 'username' ;
$snoopy -> pass = 'password' ;
$snoopy -> agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' ;
$snoopy -> referer = 'http://www.kinopoisk.ru/index.php?kp_query=' . $movie ;
$snoopy -> rawheaders [ 'Cache-Control' ] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0' ;
$snoopy -> rawheaders [ 'Pragma' ] = 'no-cache' ;
$snoopy -> rawheaders [ 'Accept' ] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ;
$snoopy -> rawheaders [ 'Accept-Language' ] = 'ru,en-us;q=0.7,en;q=0.3' ;
$snoopy -> cookies [ 'users_info[check_sh_bool]' ] = 'none' ;
$snoopy -> cookies [ 'comm_sort' ] = 'mix' ;
$snoopy -> cookies [ 'forum_data[login]' ] = $snoopy -> pass ;
if ( $snoopy -> fetch ( $search_url . $movie ) ) {
$f = $snoopy -> results ;
$movie_id = substr ( $f , $begin + 35
, $end - $begin - 35
) ;
$snoopy -> fetch ( $movie_url . $movie_id . '/' ) ;
} else {
echo 'error fetching document: ' . $snoopy -> error . '<br>' ;
}
тут собстно дальше-то и затык. id фильма получили, страницу получили, дальше нужно разбирать саму страницу.
пробовал через strpos по началу и концу, но из-за сложных вычислний забил на это дело. попробовал через регулярное, но что-то тоже не особо(вернее совсем) не получилось :(
может кто-то помочь с этим делом?
Viper
Отправлено: 22 Октября, 2009 - 15:37:58
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007
Откуда: Симферополь
Помог: 98 раз(а)
много кусков нужно приводить :)
CODE (
text ):
скопировать код в буфер обмена
<h1 style="margin: 0; padding: 0" class="moviename-big">Зачарованная </h1>
...
<td style="width: 100%">
<span style="color: #666; font-size: 13px">Enchanted</span>
</td>
...
<table class="info">
<tr><td class="type">год</td><td class=""><a href="/level/10/m_act%5Byear%5D/2007/">2007</a></td></tr>
<tr><td class="type">страна</td><td class=""><a href="/level/10/m_act%5Bcountry%5D/3/">США</a></td></tr>
<tr><td class="type">слоган</td><td>«Все еще ждешь принца?.. Добро пожаловать в реальный мир.»</td></tr>
<tr><td class="type">режиссер</td><td><a href="/level/4/people/10817/">Кевин Лима</a></td></tr>
<tr><td class="type">сценарий</td><td><a href="/level/4/people/25433/">Билл Келли</a></td></tr>
<tr><td class="type">продюсер</td><td><a href="/level/4/people/21224/">Кристофер Чейз</a>, <a href="/level/4/people/8618/">Бэрри Джозефсон</a>, <a href="/level/4/people/25475/">Сунил Перкаш</a>, <a href="/level/19/film/106165/#Продюсеры">...</a></td></tr>
<tr><td class="type">оператор</td><td><a href="/level/4/people/85510/">Дон Бёрджесс</a></td></tr>
<tr><td class="type">композитор</td><td><a href="/level/4/people/609710/">Алан Менкен</a></td></tr>
<tr><td class="type">жанр</td><td><a href="/level/10/m_act%5Bgenre%5D/5/">фэнтези</a>, <a href="/level/10/m_act%5Bgenre%5D/6/">комедия</a>, <a href="/level/10/m_act%5Bgenre%5D/7/">мелодрама</a>, <a href="/level/10/m_act%5Bgenre%5D/9/">мюзикл</a>, <a href="/level/10/m_act%5Bgenre%5D/10/">приключения</a>, <a href="/level/10/m_act%5Bgenre%5D/11/">семейный</a></td></tr>
<tr><td class="type">бюджет</td><td class="dollar"><a href="/level/85/film/106165/">$85 000 000</a></td></tr>
<tr><td class="type">сборы в США</td><td class="dollar"><a href="/level/85/film/106165/">$127 807 262</a></td></tr>
<tr><td class="type">сборы в мире</td><td class="dollar"><a href="/level/85/film/106165/">+ $212 680 390 = $340 487 652</a></td></tr>
<tr><td class="type">сборы в России</td><td class="dollar"><a href="/level/42/weekend/2007-11-22/type/rus/cur/RUB/">$5 869 783</a></td></tr>
<tr><td class="type">DVD в США</td><td class="dollar"><a href="/level/54/sunday/20080323/">$87 422 164</a></td></tr>
<tr><td class="type">зрители</td><td class="dollar"><img src="/images/flags/flag-3.gif" width=16 height=11 alt="США"> 18.4 млн. <img src="/images/flags/flag-11.gif" width=16 height=11 alt="Великобритания"> 3.34 млн. <img src="/images/flags/flag-8.gif" width=16 height=11 alt="Франция"> 1.75 млн.</td></tr>
<tr><td class="type">премьера (мир)</td><td class="calendar"><a href="/level/80/film/106165/">20 октября 2007</a></td></tr>
<tr><td class="type">премьера (РФ)</td><td class="calendar"> <a class='all' href='/level/8/view/prem/year/2007/#106165'>22 ноября 2007</a>, <a href='/level/10/m_act[company]/127/' class='all'>«BVSPR»</a></td></tr>
<tr><td class="type">релиз на DVD</td><td class="dvd"><a href='/level/50/year/2009/month/08/#106165_2009-08-03' class='all'>3 августа 2009</a>, <a class='all' href='/level/50/year/2009/company/6/'>«CP-DIGITAL»</td></tr>
<tr><td class="type">рейтинг MPAA</td><td class="rate_pg"><a href='/level/38/film/106165/rn/PG/'><img src='/images/mpaa/PG.gif' height=11 alt='рейтинг PG' border=0></a> </td></tr>
<tr><td class="type">время</td><td class="time" id='runtime'>103 мин.</td></tr>
</table>
собственно вот эти данные. год, режиссер, композитор и т.д.
Champion
Отправлено: 23 Октября, 2009 - 09:13:32
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008
Откуда: Москва
Помог: 57 раз(а)
Viper пишет: избавится от первого элемента в массиве?
Никак. Первый элемент - то что соотсветствует всему шаблону, а дальше все скобки.
Viper пишет: т.е. класс может указываться а может и нет.
(class="")?
Или <td[^>]*>
ronin
Отправлено: 20 Марта, 2010 - 16:54:29
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Март 2010
Помог: 0 раз(а)
Задача та же. Нужно спарсить нужную информацию согласно шаблону.
Как избавиться от ссылок? <a href="/level/10/m_act%5Bgenre%5D/3/">боевик</a>
(Отредактировано автором: 20 Марта, 2010 - 21:55:58)
ronin
Отправлено: 26 Марта, 2010 - 17:24:25
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Март 2010
Помог: 0 раз(а)
Что-то я на кодил не так. Не выводит переменную $name
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
//error_reporting(0);
$kp_link = "http://www.kinopoisk.ru/level/1/film/4205/" ;
//if ($_REQUEST['champion'] !== 'raikkonen') exit();
include "snoopy.class.php" ;
$snp = new Snoopy( ) ;
$snp -> host = "http://www.kinopoisk.ru" ;
$snp -> agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3" ;
$snp -> fetch ( $kp_link ) ;
$res = $snp -> results ;
$name = '<h1 style="margin: 0; padding: 0" class="moviename-big">' ;
$name_position = strpos ( $res , $name ) ; $result = substr ( $res , $name_position , 300) ; //print $result;
preg_match_all ( '|<a href="/level/10/m_act%5Bgenre%5D/(\d+)/">(.+)</a>|U' , $result , $match ) ; $name = $match [ 0] [ 0] . $match [ 1] [ 0] . $match [ 2] [ 0] ;
print $name ;
?>
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB