Создать ответ 
Парсер ютубе (youtube.com)
Автор Сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #1
Парсер ютубе (youtube.com)
PHP код:
<?php
// Отключить все сообщения об ошибках
/*error_reporting(0);*/

// Инклудим все необходимое
@ini_set('max_execution_time'0);
?>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html;  charset=utf-8">
  <title>Php Парсер YouTybe </title>
</head>

<body>

<form  action="" method="post">
<center>

<table>
<tr><td><div style='padding:5px;' align="right">Кейворд:</div></td><td> <div style='padding:5px;' align="left"><input name="keys" rows=5 cols=20 wrap="off"></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>
<tr><td><div style='padding:5px;' align="right">Имя файла:</div></td><td> <div style='padding:5px;' align="left"><input name="filename" type="text" value="ssilki.txt"> </div></td></tr>
</table>

<table>
<tr><td><center><input name="sub" type="submit" value="Парсить"> &nbsp;&nbsp;&nbsp;<input  type="reset" value="Сбросить настройки"></center> </td></tr>
</table>

</form>

<?php

    
if(isset($_POST['sub'])){

      
$keys $_POST['keys'];
      
$page intval(trim($_POST['page']));
      
$filename trim($_POST['filename']);

      
$KeysArray explode("\n",$keys);
      
$KeysArray array_map("trim",$KeysArray);
      
$CountKeys count($KeysArray);

      
// счетчик
      
$cpl 0;

      
///Условие
      
if ($CountKeys>&& !empty($page)){

           for (
$i=0;$i<$CountKeys;$i++){

            
// количество страниц
               
for ($p=1;$p<=$page;$p++){

                 
$YouLink "";

                 
//обрабатываем ключевик
                 
$key trim($KeysArray[$i]);
                 
$key urlencode($key);
                 
$key str_replace("%20""+"$key);

                 
$PageParse=file_get_contents("http://www.youtube.com/results?search_type=videos&search_query=".$key."&page=".$p);

                  if(
strpos($PageParse"/watch?v=")!=FALSE)
                    {
                    
preg_match_all("/href=\"\/watch\?v=([^\"]*)\"/sU"$PageParse$matches);
                    
$resultmovies=implode(" "$matches[1]);
                    
$resultmovies=str_replace("&hd=1"null$resultmovies);
                    
$resultmovies=str_replace("&feature=browch"null$resultmovies);
                    
$resultmovies=explode(" "$resultmovies);
                    
$resultmovies=array_unique($resultmovies);

                     
$moviescount=count($resultmovies);
                        foreach(
$resultmovies as $movielink)
                        {


                              
$YouLink.= "http://www.youtube.com/v/".trim($movielink)."\r\n";


                              
$cpl++;
                        }

                       
// Записываем линк youTube
                       
$fp fopen ($filename"a+");
                       
fwrite ($fp$YouLink);
                       
fclose ($fp);

                       
sleep(1);
                    }


                 }


           }


      }


     echo 
"<center><table><tr><td><font color=\"green\">Спарсено $cpl ссылок на видео. Данные ссылки сохранены в файл http://www.сайт.ru/1/2/$filename </font> </td></tr></table></center>";

    }
p
?>

</body>
</html> 


Этот парсер всё записывает в корень сайта. Как сделать так, что бы парсер записывал в нужную мне папку (_http://www.сайт.ru/1/2/ssilki.txt)? Или сделать вывод парсинга на экран компьютера?

Если я изменю это
PHP код:
$filename trim($_POST['filename']); 

На вот это
PHP код:
$filename trim($_POST['http://www.сайт.ru/1/2/filename']); 

правильно будет?
(Последний раз сообщение было отредактировано 27.09.2013 в 10:00:21, отредактировал пользователь sergey37.)
27.09.2013 09:57:13
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Парсер ютубе (youtube.com)
Нет, не правильно.

Правильно будет так:
PHP код:
$filename 'http://www.сайт.ru/1/2/filename.txt'

Плюс можно убрать уже ненужную строчку:
Код:
<tr><td><div style='padding:5px;' align="right">Имя файла:</div></td><td> <div style='padding:5px;' align="left"><input name="filename" type="text" value="ssilki.txt"> </div></td></tr>

Для вывода на экран, замените строчку:
PHP код:
$YouLink.= "http://www.youtube.com/v/".trim($movielink)."\r\n"

на такую:
PHP код:
echo "http://www.youtube.com/v/".trim($movielink)."<br>"

А эти можно тогда удалить:
PHP код:
// Записываем линк youTube
$fp fopen ($filename"a+");
fwrite ($fp$YouLink);
fclose ($fp);
sleep(1); 
27.09.2013 18:04:02
Найти все сообщения Цитировать это сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #3
RE: Парсер ютубе (youtube.com)
А для сервера какой вариант будет лучше? Какой из вариантов создаёт меньшую нагрузку на сервер?
28.09.2013 21:22:38
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Парсер ютубе (youtube.com)
Все зависит от целей, объемов (количества ссылок) и частоты обращения к скрипту. Хотя основную нагрузку дает сам скрипт, а не вывод (сохранение) результатов его работы.

Так же нужно иметь ввиду как будут использоваться полученные ссылки. Если только один раз - то лучше на экран.

Так что особой разницы нет, используйте как Вам удобнее.

Но если этот парсер доступен на вашем сайте для всех пользователей, то обязательно делайте ограничение на максимальное количество ссылок.
28.09.2013 22:34:00
Найти все сообщения Цитировать это сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #5
RE: Парсер ютубе (youtube.com)
Будет доступен для всех пользователей, как сделать ограничение на количество ссылок.
А применение: юзер делает запрос, получает результат, сохраняет себе в файл, и всё.
28.09.2013 22:55:27
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #6
RE: Парсер ютубе (youtube.com)
Ограничение нужно обязательно, т.к. "нехороший" пользователь может задать большое количество страниц (например, 99999999) и пойти спать, а в это время Ваш сервер будет долбить youtube.com. А еще хуже, если тоже самое сделать с нескольких браузеров и IP.

Для того, чтобы такого не случилось, после строчки:
PHP код:
$page intval(trim($_POST['page'])); 

добавляем ограничение, например, на 10 страниц (как я понял по 20 ссылок на каждой):
PHP код:
if ($page>10$page=10

Так же, если это делается для юзеров - то лучше выводить на экран (оформить там покрасивее и т.д.). Если сохранять в файл - то логично было бы каждому запросу - свой файл, который хранился бы к примеру один час. Но, зачем тратить место на сервере, тем более, что опять "не хорошие" люди могут напакостить.

Никогда не забывайте о "доброжелателях". Это я на себе ощутил и не раз.
28.09.2013 23:22:02
Найти все сообщения Цитировать это сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #7
RE: Парсер ютубе (youtube.com)
Я именно об этом и думаю, при выводе на экран на сайте ничего не сохраняется, а если записывать в файл то я именно для этого просил помощь что бы записывать в определённую папку, что бы раз в 3 дня к примеру чистить эту папку от всех файлов не глядя, или тупо удалить папку через тоталкомандер, и тут же новую создать с таким же именем.
29.09.2013 09:39:53
Найти все сообщения Цитировать это сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #8
RE: Парсер ютубе (youtube.com)
Поднимаю тему
сделал всё как вы сказали.
PHP код:
<?php

// 
// 

// Отключить все сообщения об ошибках
/*error_reporting(0);*/

// Инклудим все необходимое

@ini_set('max_execution_time'0);
?>
<html>

<head>

<meta http-equiv="Content-Type" content="text/html;  charset=utf-8">
  <title>Php Парсер YouTybe </title>
</head>

<body>

<form  action="" method="post">
<center>






<table>
<tr><td><div style='padding:5px;' align="right">Кейворд:</div></td><td> <div style='padding:5px;' align="left"><input name="keys" rows=5 cols=20 wrap="off"></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="Парсить"> &nbsp;&nbsp;&nbsp;<input  type="reset" value="Сбросить настройки"></center> </td></tr>
</table>


<table>
<tr><td><a>Ваша реклама всего здесь за 10 рублей</a> </td></tr>
</table>
</center>




</form>

<?php

    
if(isset($_POST['sub'])){


      
$keys $_POST['keys'];
      
$page intval(trim($_POST['page']));
      if (
$page>10$page=10
      
$filename trim($_POST['filename']);

      
$KeysArray explode("\n",$keys);
      
$KeysArray array_map("trim",$KeysArray);
      
$CountKeys count($KeysArray);

      
// счетчик
      
$cpl 0;

      
///Условие
      
if ($CountKeys>&& !empty($page)){

           for (
$i=0;$i<$CountKeys;$i++){

            
// количество страниц
               
for ($p=1;$p<=$page;$p++){

                 
$YouLink "";

                 
//обрабатываем ключевик
                 
$key trim($KeysArray[$i]);
                 
$key urlencode($key);
                 
$key str_replace("%20""+"$key);

                 
$PageParse=file_get_contents("http://www.youtube.com/results?search_type=videos&search_query=".$key."&page=".$p);

                  if(
strpos($PageParse"/watch?v=")!=FALSE)
                    {
                    
preg_match_all("/href=\"\/watch\?v=([^\"]*)\"/sU"$PageParse$matches);
                    
$resultmovies=implode(" "$matches[1]);
                    
$resultmovies=str_replace("&hd=1"null$resultmovies);
                    
$resultmovies=str_replace("&feature=browch"null$resultmovies);
                    
$resultmovies=explode(" "$resultmovies);
                    
$resultmovies=array_unique($resultmovies);

                     
$moviescount=count($resultmovies);
                        foreach(
$resultmovies as $movielink)
                        {


                              echo 
"http://www.youtube.com/v/".trim($movielink)."<br>";//$YouLink.= "http://www.youtube.com/v/".trim($movielink)."\r\n";


                              
$cpl++;
                        }

                       
// Записываем линк youTube
                       
$fp fopen ($filename"a+");
                       
fwrite ($fp$YouLink);
                       
fclose ($fp);

                       
sleep(1);
                    }


                 }




           }


      }



     
//echo "<center><table><tr><td><font color=\"green\">Спарсено $cpl ссылок на видео. Данные ссылки сохранены в файл http://www.lord-master.ru/$filename </font> </td></tr></table></center>";

    
}p



?>

</body>

</html> 

Но ограничения не выходит, всё равно в строчку можно поставить

И выскакивает ошибка
PHP код:
Warningfopen() [function.fopen]: Filename cannot be empty in /home/sergey37/lord-master.ru/1tube.php on line 108

Warning
fwrite() expects parameter 1 to be resourceboolean given in /home/sergey37/lord-master.ru/1tube.php on line 109

Warning
fclose() expects parameter 1 to be resourceboolean given in /home/sergey37/lord-master.ru/1tube.php on line 110 
24.02.2014 11:04:24
Найти все сообщения Цитировать это сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #9
RE: Парсер ютубе (youtube.com)
Вопрос решён. Разобрался.
24.02.2014 13:39:05
Найти все сообщения Цитировать это сообщение
sergey37 Не на форуме
Старшина
*

Сообщений: 58
У нас с: Sep 2013
Сообщение: #10
RE: Парсер ютубе (youtube.com)
Подниму слегка тему.

PHP код:
<?php

// 
// 

// Отключить все сообщения об ошибках
/*error_reporting(0);*/

// Инклудим все необходимое

@ini_set('max_execution_time'0);
?>


<head>

<meta http-equiv="Content-Type" content="text/html;  charset=utf-8">
  <title>YouTybe Парсер </title>
</head>



<form  action="" method="post">
<center>





<center>Не забудьте изменить название файла на своё</center>
<table>
<tr><td><div style='padding:5px;' align="right">Кейворд:</div></td><td> <div style='padding:5px;' align="left"><input name="keys" rows=5 cols=20 wrap="off"></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>
<tr><td><div style='padding:5px;' align="right">Имя файла:</div></td><td> <div style='padding:5px;' align="left"><input name="filename" type="text" value="ifreim.txt"> </div></td></tr>

</table>


<table>
<tr><td><center><input name="sub" type="submit" value="Парсить"> &nbsp;&nbsp;&nbsp;<input  type="reset" value="Сбросить настройки"></center> </td></tr>
</table>


</center>




</form>

<?php

    
if(isset($_POST['sub'])){


      
$keys $_POST['keys'];
      
$page intval(trim($_POST['page']));
      if (
$page>15$page=15;
      
$filename trim($_POST['filename']);

      
$KeysArray explode("\n",$keys);
      
$KeysArray array_map("trim",$KeysArray);
      
$CountKeys count($KeysArray);

      
// счетчик
      
$cpl 0;

      
///Условие
      
if ($CountKeys>&& !empty($page)){

           for (
$i=0;$i<$CountKeys;$i++){

            
// количество страниц
               
for ($p=1;$p<=$page;$p++){

                 
$YouLink "";

                 
//обрабатываем ключевик
                 
$key trim($KeysArray[$i]);
                 
$key urlencode($key);
                 
$key str_replace("%20""+"$key);

                 
$PageParse=file_get_contents("http://www.youtube.com/results?search_type=videos&search_query=".$key."&page=".$p);

                  if(
strpos($PageParse"/watch?v=")!=FALSE)
                    {
                    
preg_match_all("/href=\"\/watch\?v=([^\"]*)\"/sU"$PageParse$matches);
                    
$resultmovies=implode(" "$matches[1]);
                    
$resultmovies=str_replace("&hd=1"null$resultmovies);
                    
$resultmovies=str_replace("&feature=browch"null$resultmovies);
                    
$resultmovies=explode(" "$resultmovies);
                    
$resultmovies=array_unique($resultmovies);

                     
$moviescount=count($resultmovies);
                        foreach(
$resultmovies as $movielink)
                        {


                              
$YouLink .= '<object width="640" height="400"><param name="movie" value="http://www.youtube.com/v/'.trim($movielink).'?fs=1&amp;hl=ru_RU&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'.trim($movielink).'?fs=1&amp;hl=ru_RU&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="400"></embed></object>'."\r\n";


                              
$cpl++;
                        }

                       
// Записываем линк youTube
                       
$fp fopen ($filename"a+");
                       
fwrite ($fp$YouLink);
                       
fclose ($fp);

                       
sleep(1);
                    }


                 }




           }


      }



     echo 
"<center><table><tr><td>Спарсено $cpl ссылок на видео. Данные ссылки сохранены в файл it1b.allhairs.ru/$filename </font> </td></tr></table></center>";

    }



?>

Ваш вариант записи в отдельную папку не работает почему то (((.

Как сделать что бы он записывал в папку it1b.allhairs.ru/upload/ytube/ ?

Можете помочь?
28.02.2014 11:35:11
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru