Помощник
|
Парсер YouTube.com, Нужна помощь в допиливании |
Fucktor
|
Сообщение
#1
|
||
|
|
||
|
|||
tszyan |
29.1.2013, 11:34;
Ответить: tszyan
Сообщение
#2
|
|
Fucktor,
Под исправлением индексов подразумевалось что строчка: preg_match_all("/href=\"\/watch\?v=([^\"]*)\"/sU", $PageParse, $matches); возвращает в переменную $matches массив с результатами соответствующими регулярному выражению, а поменяв регулярное выражение так, чтобы в эту переменную возвращался также и title, вы меняете количество элементов в возвращаемом массиве. В этой строчке идет обращение к элементу массива с индексом 1: $resultmovies=implode(" ", $matches[1]); После внесения изменений в этом элементе будет уже не идентификатор, а title (предполагаю, сам не тестировал). Чтобы проверить что в каком элементе - можно вывести $matches с помощью print_r. |
|
|
Fucktor
|
Сообщение
#3
|
|
tszyan, выводил уже, вот что у меня вышло:
<?php // Отключить все сообщения об ошибках /*error_reporting(0);*/ // Инклудим все необходимое @ini_set('max_execution_time', 0); // Подключаемся к серверу MySQL $hostname = 'localhost'; $username = 'root'; $password = 'password'; $db = mysql_connect($hostname, $username, $password) or die('Ошибка соединения базы'); // Устанавливаем нужную кодировку mysql_set_charset('utf8'); // Выбираем нужную БД mysql_select_db('db_mysql') or die('db not found'); ?> <html> <head> <style> input:focus{ outline:none; border-color:rgba(255,25,33,.75); border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; box-shadow:0 0 8px rgba(255,25,33,.5); -moz-box-shadow:0 0 8px rgba(255,25,33,.5); -webkit-box-shadow:0 0 8px rgba(255,25,33,.5); } input{ border:1px solid #aaa; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; transition:border linear .2s,box-shadow linear .2s; -moz-transition:border linear .2s,-moz-box-shadow linear .2s; -webkit-transition:border linear .2s,-webkit-box-shadow linear .2s; } textarea:focus{ outline:none; border-color:rgba(255,25,33,.75); border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; box-shadow:0 0 8px rgba(255,25,33,.5); -moz-box-shadow:0 0 8px rgba(255,25,33,.5); -webkit-box-shadow:0 0 8px rgba(255,25,33,.5); } textarea{ border:1px solid #aaa; border-radius:3px; -moz-border-radius:3px; -webkit-border-radius:3px; transition:border linear .2s,box-shadow linear .2s; -moz-transition:border linear .2s,-moz-box-shadow linear .2s; -webkit-transition:border linear .2s,-webkit-box-shadow linear .2s; } table{ background-color: #cccccc; width: 400px; } tr{ background-color: #ffffff; } </style> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>YouTybe Парсер </title> </head> <body> <form action="" method="post"> <input name="url" type="hidden" value="<?=$url?>"> <center> <table> <tr><td><div style='padding:5px;' align="right">Кейворды:</div></td><td> <div style='padding:5px;' align="left"><textarea name="keys" rows=5 cols=20 wrap="off"></textarea></div></td></tr> <tr><td><div style='padding:5px;' align="right">Количество страниц:</div></td><td> <div style='padding:5px;' align="left"><input name="page" type="text" value="1"> </div></td></tr> </table> <table> <tr><td><center><input name="sub" type="submit" value="Парсить"> <input type="reset" value="Сбросить настройки"></center> </td></tr> </table> </center> </form> <?php if(isset($_POST['sub'])){ $keys = $_POST['keys']; $page = intval(trim($_POST['page'])); $url = trim($_POST['url']); $KeysArray = explode("\n",$keys); $KeysArray = array_map("trim",$KeysArray); $CountKeys = count($KeysArray); // счетчик $cpl = 0; ///Условие if ($CountKeys>0 && !empty($page)){ for ($i=0;$i<$CountKeys;$i++){ // количество страниц for ($p=1;$p<=$page;$p++){ $YouLink = ""; //обрабатываем ключевик $key = trim($KeysArray[$i]); $key = rawurlencode($key); $key = str_replace("%20", "+", $key); $PageParse=file_get_contents("http://www.youtube.com/results?search_category=10&search_query=".$key."&high_definition=1&search_type=videos&uni=3&search_sort=video_view_count&page=".$p); if(strpos($PageParse, "/watch?v=")!=FALSE) { preg_match_all('~<a.+title="([^"]+)".+/watch\?v=([^"]+)~sU', $PageParse, $matches); $resultmovies=implode(" ", $matches[2]); $resultmovies=str_replace("&high_definition=1", null, $resultmovies); $resultmovies=str_replace("&feature=browch", null, $resultmovies); $resultmovies=explode(" ", $resultmovies); $resultmovies=array_unique($resultmovies); $moviescount=count($resultmovies); echo '<ul>'; foreach($matches[1] as $key => $val) { $title = $val; $url = $matches[2][$key]; $cpl++; $query = "INSERT INTO `youtube` VALUES (NULL,'".$title."','".$description."','".$url."')"; $result = mysql_query($query) or die('query failed'); } echo '</ul>'; } } } } echo "<center><table><tr><td><font color=\"green\">Спарсено $cpl видео c youtube.com</font></td></tr></table></center>"; } ?> <? mysql_close($db); ?> </body> </html> Но тут появилась другая проблема, в ячейку url в базу записывается по одному символу на строку, в title записываются заголовки. Вот теперь не пойму почему же ссылки не хавает. |
|
|
tszyan |
30.1.2013, 15:18;
Ответить: tszyan
Сообщение
#4
|
|
Регулярное выражение кривое.
Попробуй: preg_match_all('~<a [^<>]*title=[\'"]([^\'"]+)[\'"] [^<>]*href=[\'"]/watch\?v=([^\'"]+)[\'"][^<>]*>~si', $PageParse, $matches);
|
|
|
xdparlament |
30.1.2013, 23:07;
Ответить: xdparlament
Сообщение
#5
|
|
подскажите пожалуйста как с помощью этого скрипта можно исключить некоторые видео,чтобы они не попадали в файл, либо определенный канал
|
|
|
tszyan |
30.1.2013, 23:47;
Ответить: tszyan
Сообщение
#6
|
|
xdparlament,
Поставьте задачу корректнее. Чего вы хотите добиться? О каком файле речь? Данный скрипт парсит результаты поиска и сохраняет названия и идентификаторы видео в базу данных. |
|
|
xdparlament |
31.1.2013, 12:57;
Ответить: xdparlament
Сообщение
#7
|
|
tszyan, об этом же файле и речь, можно ли дописать исключения, которые бы этот скрипт просто не добавлял в базу ?
|
|
|
Fucktor
|
Сообщение
#8
|
|
tszyan, огромное спасибо, всё заработало
Теперь в задачах сделать фильтр по поиску с выводом и сохранением значений для парсинга + исключение дублей, ну и думаю ещё нужно будет ещё и полные описания научиться грабить))) Ну а сам вывод этих видосов сделать будет не трудно))) Сообщение отредактировал Fucktor - 31.1.2013, 13:56 |
|
|
tszyan |
31.1.2013, 23:28;
Ответить: tszyan
Сообщение
#9
|
|
xdparlament,
В данном случае регулярное выражение находит значения title и url, если их достаточно для вашего условия, то смело вставляете его перед добавлением в базу. Если не хватает (Вы упоминали исключение определенного канала), то надо либо менять выражение, либо добавлять новое (смотря что будет удобнее в конкретном случае), чтобы оно возвращало те данные, которые вам нужны для условия. Скрипт не применим - если данных в HTML коде страницы просто не достаточно. Например, если нужно исключить каналы в которых меньше 10 видео. В этом случае придется парсить в глубину и загружать еще одну страницу для каждого видео (или канала, если хранить информацию о них в БД). Больше по данному вопросу без конкретного условия ничего сказать не могу. Fucktor, Пожалуйста. Дубляжи лучше проверять при добавлении в базу (видел у вас проверку на уникальность и другие магические действия с непонятной переменной $resultmovies, которая в последней версии вообще не используется). Для получения полного описания придется парсить внутренние страницы (в 21 раз больше HTML-файлов грузить, со всеми вытекающими для трафика и быстродействия). Сообщение отредактировал tszyan - 31.1.2013, 23:30 |
|
|
Fucktor
|
Сообщение
#10
|
|
tszyan, надо пробовать) на счёт описаний лучше наверное свой какой-то текст генерить и с ключами самого видео вставлять. Чтобы был какой-то маломальский текст. Вот кстати попробовал попарсить по ключам, дублей куча, как все их безболезнено удалить все сразу, а не по одному через phpmyadmin не знаю
http://www.rapcorp.net/multimedia/video/ |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
A-Parser 1.1 - продвинутый парсер ПС, кейвордов, контента, показателей, 70+ парсеров. | 352 | Forbidden | 278193 | 21.3.2024, 14:38 автор: AParser_Support |
|
Не получается оплатить YouTube Premium (для Турции и Аргентины по VPN YouTube Premium недоступна) | 3 | rownong27 | 443 | 20.3.2024, 21:39 автор: MisterBit |
|
Базы Youtube кейвордов с данными по конкуренции и Volume | 3 | Krok | 1033 | 20.3.2024, 14:59 автор: ManagerAE8888 |
|
TopSmm.ru Накрутка Вконтакте/Instagram/YouTube и др. Гарантия на докрутку и самые низкие цены! | 74 | KalininDima | 38589 | 15.3.2024, 16:12 автор: KalininDima |
|
Дешевые просмотры YouTube с гарантией, услуги в Instagram, ВК, FB, ОK, Twitter - SmmPanele.Ru Очень качественные услуги, сотни отзывов на других форумах. Делаю все |
146 | SergWeider | 99373 | 23.2.2024, 17:36 автор: SergWeider |
Текстовая версия | Сейчас: 28.3.2024, 14:19 |