Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Первый парсер на PHP, нужна помощь

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
rasl89
Отправлено: 11 Апреля, 2020 - 22:45:30
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Приветствую. В PHP новичок, и вот начитавшись, пройдя множество видео курсов пытаюсь собрать парсер данных с нуля.
План создания парсера
1. научиться парсить и выводить спарсенное (описание, видео, постер)
2. передавать данные в бд сайта
3. научиться парсить раздел с новостями


Пункт первый плана стартовал, появился затык: не могу спарсить видео (спарсить ссылку на видео из кода плеера), и спарсить постер, если у донора установлен не один скриншот

Пример ссылки: https://doramatv[dot]live/zolotoi_rycar
Пример ссылки с несколькими постерами: https://doramatv[dot]live/reinkarnac[dot][dot][dot]_korolia_obezian

Вопросы:
1. Как спарсить код видео, при условии что ссылка на видео плеер вложена в страницу? подскажите пожалуйста решение с объяснением
2. Как спарсить постер, если их у донора на новость несколько (слайдер)? подскажите пожалуйста решение с объяснением
3. После того, как все спарсено, нужно ли все это собрать в массив для последующей передачи в БД?

Код парсера, а также вложения:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <head>
  3.        
  4. <title>Dorama.tv parser 2020</title>   
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11. <form action="" method="POST">
  12.     <input type="text" name="url" size="50" placeholder="Адрес фильма">
  13.     <input type="submit" value="Спарсить 1 фильм">
  14. </form>
  15.  
  16. </body>
  17.  
  18.  
  19. <?php
  20. require ('simple_html_dom/simple_html_dom.php'); //подключаем библиотеку DOM
  21.  
  22.  
  23.  
  24. // Првоеряем заполнено ли поле (ссылка) Адрес фильма
  25. if (isset($_POST['url'])){    // как вариант использовать empty: if (!empty($_POST['url'])){
  26.        
  27.         $url = $_POST['url']; //если заполнено, вставляем в переменную
  28.        
  29.  
  30. }
  31.  
  32. //Массив для данных
  33. //$lists = array();
  34.  
  35. require ('curl.php'); //подключаем curl
  36.  
  37.  
  38. //Создаем объект библиотеки для парсинга
  39. $dom = new simple_html_dom();
  40. $html = str_get_html($answer); //Формируем массив
  41.  
  42.  
  43. //парсинг данных со странеицы:
  44.  
  45. foreach($html->find("h1[class=names]") as $list){
  46. $names=$list->innertext;
  47.         //echo $names;
  48.        
  49.         //$trimmed_names = trim($names, "Фильм");
  50.         //echo $trimmed_names;
  51.  
  52.         }
  53.  
  54. foreach($html->find("span[itemprop=duration]") as $list1){
  55. $duration=$list1->innertext;
  56.         echo $duration;
  57.         }
  58.  
  59.  
  60. foreach($html->find("span[class=elem_actor]") as $list2){
  61. $elem_actor=$list2->innertext;
  62.         echo $elem_actor;
  63.         }
  64.  
  65. foreach($html->find("span[class=elem_genre]") as $list3){
  66. $elem_genre=$list3->innertext;
  67.         echo $elem_genre;
  68.         }
  69.  
  70. foreach($html->find("span[class=elem_country]") as $list4){
  71. $elem_country=$list4->innertext;
  72.         echo $elem_country;
  73.         }
  74.  
  75. foreach($html->find("span[class=elem_director]") as $list5){
  76. $elem_director=$list5->innertext;
  77.         echo $elem_director;
  78.         }
  79.  
  80.  
  81. foreach($html->find("span[class=elem_year]") as $list6){
  82. $elem_year=$list6->innertext;
  83.         echo $elem_year;
  84.         }
  85.  
  86. foreach($html->find("span[class=elem_translator]") as $list7){
  87. $elem_translator=$list7->innertext;
  88.         echo $elem_translator;
  89.         }
  90.  
  91.  
  92. foreach($html->find("div[class=manga-description]") as $list8){
  93. $description=$list8->innertext;
  94.         echo $description;
  95.         }
  96.  
  97.  
  98. foreach($html->find("img[data-thumb]") as $poster){
  99. $poster2=$poster->src;
  100.         }
  101. $strrandd=strtotime("now");
  102. $put='data/'.$strrandd.".".array_pop(explode('.',$poster2));
  103.         echo "<img src = \"".$poster2."\">";
  104.  
  105.  
  106.  
  107. /*
  108. foreach($html->find(".embed_source") as $list9){
  109. $vid=$list9->value;
  110. $html=str_get_html(html_entity_decode($vid));
  111. $vid=$html->find('iframe',0)->src;
  112. $massa[]=$vid;
  113. }
  114. echo '</br>'.$min.' '.count($massa).'</br>';
  115. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  116. $obsmass[]=$massa;
  117. */
  118.  
  119.  
  120. /*
  121. //Выводим массив
  122. foreach ($lists as $key => $value)
  123. {
  124.         echo "NAME : " . $key . " DESCRIPTIONS: " . $value . "<br/>";
  125. }
  126. */
  127.  
  128. ?>
 
 Top
rasl89
Отправлено: 12 Апреля, 2020 - 15:23:41
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Есть набросок по парсу видео:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $min=0;
  3. $obsmass=array();
  4.  
  5. $div=count($html->find('div[class=expandable]'));
  6. $div--;
  7. $table=$html->find('div[class=expandable]',$div) ;
  8. $site='https://doramatv.live';
  9. $kolvo=count($table->find('a[href]'));
  10. $dd=0;
  11. foreach($table->find('a[href]') as $a3){
  12. $dd++; 
  13. usleep(1000000);       
  14. $slovo3=$a3->href;
  15.  
  16. print_r($slovo3);
  17.        
  18.  
  19.  
  20. $html1=($site.$slovo3);
  21. $massa=array();
  22. foreach($html1->find('.embed_source') as $a4){
  23. $vid=$a4->value;
  24. $html1=str_get_html(html_entity_decode($vid));
  25. $vid=$html1->find('iframe',0)->src;
  26. $massa[]=$vid;
  27. }
  28. echo '</br>'.$min.' '.count($massa).'</br>';
  29. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  30. $obsmass[]=$massa;
  31. }
  32.  
  33. $arros=array();
  34.  
  35. for($i=0;$i<$min;$i++){
  36. $sez=0;
  37. foreach($obsmass as $o){
  38. $sez++;
  39. $arros[$i][$sez]= "\'".trim(str_replace(''', '', $o[$i]))."\'";  
  40. }}
  41. $ender='';
  42. foreach($arros as $es){
  43. $ender.="[".implode(",",$es)."],";    
  44. }


пока не работает
 
 Top
LIME
Отправлено: 12 Апреля, 2020 - 16:38:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




"не работает" - нет такого диагноза
как не работает? что говорит?
http://phpfaq[dot]ru/debug
(Добавление)
и сделай что-нибудь с кодом
читать невозможно
возьми в тэг PHP
 
 Top
rasl89
Отправлено: 12 Апреля, 2020 - 16:42:56
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




LIME пишет:
"не работает" - нет такого диагноза
как не работает? что говорит?
http://phpfaq[dot]ru/debug
(Добавление)
и сделай что-нибудь с кодом
читать невозможно
возьми в тэг PHP


PHP:
скопировать код в буфер обмена
  1.  
  2. <head>
  3.        
  4. <title>Dorama.tv parser 2020</title>   
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11. <form action="" method="POST">
  12.     <input type="text" name="url" size="50" placeholder="Адрес фильма">
  13.     <input type="submit" value="Спарсить 1 фильм">
  14. </form>
  15.  
  16. </body>
  17.  
  18.  
  19. <?PHP
  20. require ('simple_html_dom/simple_html_dom.php'); //подключаем библиотеку DOM
  21.  
  22.  
  23.  
  24. // Првоеряем заполнено ли поле (ссылка) Адрес фильма
  25. if (isset($_POST['url'])){    // как вариант использовать empty: if (!empty($_POST['url'])){
  26.        
  27.         $url = $_POST['url']; //если заполнено, вставляем в переменную
  28.        
  29.  
  30. }
  31.  
  32. //Массив для данных
  33. //$lists = array();
  34.  
  35. require ('curl.php'); //подключаем curl
  36.  
  37.  
  38. //Создаем объект библиотеки для парсинга
  39. $dom = new simple_html_dom();
  40. $html = str_get_html($answer); //Формируем массив
  41.  
  42.  
  43. //парсинг данных со странеицы:
  44.  
  45. foreach($html->find("h1[class=names]") as $list){
  46. $names=$list->innertext;
  47.         echo $names;
  48.        
  49.         //$trimmed_names = trim($names, "Фильм");
  50.         //echo $trimmed_names;
  51.  
  52.         }
  53.  
  54. foreach($html->find("span[itemprop=duration]") as $list1){
  55. $duration=$list1->innertext;
  56.         echo $duration;
  57.         }
  58.  
  59.  
  60. foreach($html->find("span[class=elem_actor]") as $list2){
  61. $elem_actor=$list2->innertext;
  62.         echo $elem_actor;
  63.         }
  64.  
  65. foreach($html->find("span[class=elem_genre]") as $list3){
  66. $elem_genre=$list3->innertext;
  67.         echo $elem_genre;
  68.         }
  69.  
  70. foreach($html->find("span[class=elem_country]") as $list4){
  71. $elem_country=$list4->innertext;
  72.         echo $elem_country;
  73.         }
  74.  
  75. foreach($html->find("span[class=elem_director]") as $list5){
  76. $elem_director=$list5->innertext;
  77.         echo $elem_director;
  78.         }
  79.  
  80.  
  81. foreach($html->find("span[class=elem_year]") as $list6){
  82. $elem_year=$list6->innertext;
  83.         echo $elem_year;
  84.         }
  85.  
  86. foreach($html->find("span[class=elem_translator]") as $list7){
  87. $elem_translator=$list7->innertext;
  88.         echo $elem_translator;
  89.         }
  90.  
  91.  
  92. foreach($html->find("div[class=manga-description]") as $list8){
  93. $description=$list8->innertext;
  94.         echo $description;
  95.         }
  96.  
  97.  
  98. foreach($html->find("img[data-thumb]") as $poster){
  99. $poster2=$poster->src;
  100.         }
  101. $strrandd=strtotime("now");
  102. $put='data/'.$strrandd.".".array_pop(explode('.',$poster2));
  103.         echo "<img src = \"".$poster2."\">";
  104.  
  105.  
  106.  
  107.  
  108.  
  109. /*
  110. //Выводим массив
  111.  
  112. foreach ($lists as $key => $value)
  113. {
  114.  
  115.  
  116.         echo "NAME : " . $key . " DESCRIPTIONS: " . $value . "<br/>";
  117.  
  118. }
  119.  
  120. */
  121.  
  122. ?>
  123.  


PHP:
скопировать код в буфер обмена
  1.  
  2. $min=0;
  3. $obsmass=array();
  4.  
  5. $div=count($html->find('div[class=expandable]'));
  6. $div--;
  7. $table=$html->find('div[class=expandable]',$div) ;
  8. $site='https://doramatv.live';
  9. $kolvo=count($table->find('a[href]'));
  10. $dd=0;
  11. foreach($table->find('a[href]') as $a3){
  12. $dd++; 
  13. usleep(1000000);       
  14. $slovo3=$a3->href;
  15.  
  16. print_r($slovo3);
  17.        
  18.  
  19.  
  20. $html1=($site.$slovo3);
  21. $massa=array();
  22. foreach($html1->find('.embed_source') as $a4){
  23. $vid=$a4->value;
  24. $html1=str_get_html(html_entity_decode($vid));
  25. $vid=$html1->find('iframe',0)->src;
  26. $massa[]=$vid;
  27. }
  28. echo '</br>'.$min.' '.count($massa).'</br>';
  29. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  30. $obsmass[]=$massa;
  31. }
  32.  
  33. $arros=array();
  34.  
  35. for($i=0;$i<$min;$i++){
  36. $sez=0;
  37. foreach($obsmass as $o){
  38. $sez++;
  39. $arros[$i][$sez]= "\'".trim(str_replace(''', '', $o[$i]))."\'";  
  40. }}
  41.  
  42. $ender='';
  43. foreach($arros as $es){
  44. $ender.="[".implode(",",$es)."],";    
  45. }
  46.  

(Добавление)
LIME пишет:
"не работает" - нет такого диагноза
как не работает? что говорит?
http://phpfaq[dot]ru/debug
(Добавление)
и сделай что-нибудь с кодом
читать невозможно
возьми в тэг PHP


как не работает? что говорит?
- ничего не говорит, не могу до рабочего состояния добить(
(Добавление)
LIME пишет:
"не работает" - нет такого диагноза
как не работает? что говорит?
http://phpfaq[dot]ru/debug
(Добавление)
и сделай что-нибудь с кодом
читать невозможно
возьми в тэг PHP


Вернее пишет конечно:
Fatal error: Uncaught Error: Call to a member function find() on string in C:\Webserver\OSPanel\domains\prs4\prs4.php:129 Stack trace: #0 {main} thrown in C:\Webserver\OSPanel\domains\prs4\prs4.php on line 129

не могу разобраться

PHP:
скопировать код в буфер обмена
  1. <head>
  2.        
  3. <title>Dorama.tv parser 2020</title>   
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5.  
  6. </head>
  7.  
  8. <body>
  9.  
  10. <form action="" method="POST">
  11.     <input type="text" name="url" size="50" placeholder="Адрес фильма">
  12.     <input type="submit" value="Спарсить 1 фильм">
  13. </form>
  14.  
  15. </body>
  16.  
  17.  
  18. <?PHP
  19. require ('simple_html_dom/simple_html_dom.php'); //подключаем библиотеку DOM
  20.  
  21.  
  22.  
  23. // Првоеряем заполнено ли поле (ссылка) Адрес фильма
  24. if (isset($_POST['url'])){    // как вариант использовать empty: if (!empty($_POST['url'])){
  25.        
  26.         $url = $_POST['url']; //если заполнено, вставляем в переменную
  27.        
  28.  
  29. }
  30.  
  31. //Массив для данных
  32. //$lists = array();
  33.  
  34. require ('curl.php'); //подключаем curl
  35.  
  36.  
  37. //Создаем объект библиотеки для парсинга
  38. $dom = new simple_html_dom();
  39. $html = str_get_html($answer); //Формируем массив
  40.  
  41.  
  42. //парсинг данных со странеицы:
  43.  
  44. foreach($html->find("h1[class=names]") as $list){
  45. $names=$list->innertext;
  46.         echo $names;
  47.        
  48.         //$trimmed_names = trim($names, "Фильм");
  49.         //echo $trimmed_names;
  50.  
  51.         }
  52.  
  53. foreach($html->find("span[itemprop=duration]") as $list1){
  54. $duration=$list1->innertext;
  55.         echo $duration;
  56.         }
  57.  
  58.  
  59. foreach($html->find("span[class=elem_actor]") as $list2){
  60. $elem_actor=$list2->innertext;
  61.         echo $elem_actor;
  62.         }
  63.  
  64. foreach($html->find("span[class=elem_genre]") as $list3){
  65. $elem_genre=$list3->innertext;
  66.         echo $elem_genre;
  67.         }
  68.  
  69. foreach($html->find("span[class=elem_country]") as $list4){
  70. $elem_country=$list4->innertext;
  71.         echo $elem_country;
  72.         }
  73.  
  74. foreach($html->find("span[class=elem_director]") as $list5){
  75. $elem_director=$list5->innertext;
  76.         echo $elem_director;
  77.         }
  78.  
  79.  
  80. foreach($html->find("span[class=elem_year]") as $list6){
  81. $elem_year=$list6->innertext;
  82.         echo $elem_year;
  83.         }
  84.  
  85. foreach($html->find("span[class=elem_translator]") as $list7){
  86. $elem_translator=$list7->innertext;
  87.         echo $elem_translator;
  88.         }
  89.  
  90.  
  91. foreach($html->find("div[class=manga-description]") as $list8){
  92. $description=$list8->innertext;
  93.         echo $description;
  94.         }
  95.  
  96.  
  97. foreach($html->find("img[data-thumb]") as $poster){
  98. $poster2=$poster->src;
  99.         }
  100. $strrandd=strtotime("now");
  101. $put='data/'.$strrandd.".".array_pop(explode('.',$poster2));
  102.         echo "<img src = \"".$poster2."\">";
  103.  
  104.  
  105.  
  106.  
  107.  
  108. $min=0;
  109. $obsmass=array();
  110.  
  111. $div=count($html->find('div[class=expandable]'));
  112. $div--;
  113. $table=$html->find('div[class=expandable]',$div) ;
  114. $site='https://doramatv.live';
  115. $kolvo=count($table->find('a[href]'));
  116. $dd=0;
  117. foreach($table->find('a[href]') as $a3){
  118. $dd++; 
  119. usleep(1000000);       
  120. $slovo3=$a3->href;
  121.  
  122. print_r($slovo3);
  123.        
  124.  
  125.  
  126. $html1=($site.$slovo3);
  127. $massa=array();
  128. foreach($html1->find('.embed_source') as $a4){
  129. $vid=$a4->value;
  130. $html1=str_get_html(html_entity_decode($vid));
  131. $vid=$html1->find('iframe',0)->src;
  132. $massa[]=$vid;
  133. }
  134. echo '</br>'.$min.' '.count($massa).'</br>';
  135. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  136. $obsmass[]=$massa;
  137. }
  138.  
  139. $arros=array();
  140.  
  141. for($i=0;$i<$min;$i++){
  142. $sez=0;
  143. foreach($obsmass as $o){
  144. $sez++;
  145. $arros[$i][$sez]= "\'".trim(str_replace('&#39;', '', $o[$i]))."\'";  
  146. }}
  147.  
  148. $ender='';
  149. foreach($arros as $es){
  150. $ender.="[".implode(",",$es)."],";    
  151. }
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158. /*
  159. //Выводим массив
  160.  
  161. foreach ($lists as $key => $value)
  162. {
  163.  
  164.  
  165.         echo "NAME : " . $key . " DESCRIPTIONS: " . $value . "<br/>";
  166.  
  167. }
  168.  
  169. */
  170.  
  171. ?>
 
 Top
LIME
Отправлено: 12 Апреля, 2020 - 21:04:53
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




лучше форматирование не стало
https://svyatoslav[dot]biz/misc/psr_[dot][dot][dot]nslation/#_PSR-1 ознакомся

rasl89 пишет:
$html = str_get_html($answer);
вот тебе подсказка
из строки наверное надо сначала объект получить
английским по белому же написано в ошибке
 
 Top
rasl89
Отправлено: 12 Апреля, 2020 - 21:14:54
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




LIME пишет:
лучше форматирование не стало
https://svyatoslav[dot]biz/misc/psr_[dot][dot][dot]nslation/#_PSR-1 ознакомся

rasl89 пишет:
$html = str_get_html($answer);
вот тебе подсказка
из строки наверное надо сначала объект получить
английским по белому же написано в ошибке


Так, с этим местом все в порядке, там я все получил.

Жалуется на :
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($html1->find('.embed_source') as $a4){
  3. $vid=$a4->value;
  4. $html1=str_get_html(html_entity_decode($vid));
  5. $vid=$html1->find('iframe',0)->src;
  6. $massa[]=$vid;
  7. }
  8.  


где $html1 у меня это: $html1=($site.$slovo3); две составляющие, урл + спарсенная приставка (т.к. видео во странице вложении)

Или я ошибаюсь? Поясните конкретнее пожалуйста
 
 Top
LIME
Отправлено: 12 Апреля, 2020 - 21:23:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




поясняю конкретнее
PHP:
скопировать код в буфер обмена
  1. $html1=($site.$slovo3);//скобки тут не нужны
это строка
что будет если?
PHP:
скопировать код в буфер обмена
  1. $string = 'Я строка!!! Я не умею методы объектов!!!';
  2. $string->method();


rasl89 пишет:
Так, с этим местом все в порядке
так потому что там из строки сначала объект получили!
PHP:
скопировать код в буфер обмена
  1. $dom = new simple_html_dom();//зачем? нигде потом не используется
  2. $html = str_get_html($answer);ааа...вот гиде из строки получили объект...из ответа видимо

и еще непонятно зачем тебе и curl и simplehtmldom
simplehtmldom умеет сам получать ответ из урла
$html = file_get_html('http://www.google.com/'); - вот тут будет объект
 
 Top
rasl89
Отправлено: 12 Апреля, 2020 - 21:39:19
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Спойлер (Отобразить)
и еще непонятно зачем тебе и curl и simplehtmldom
simplehtmldom умеет сам получать ответ из урла
$html = file_get_html('http://www.google.com/'); - вот тут будет объект



Действительно, это лишнее

simple_html_dom я использую чтобы можно было обращаться к элементам и атрибутам элементов, искать определенного уровня вложенные элементы, фильтровать их, искать текст и комментарии, чтобы не писать кучу регулярных выражений

Цитата:
$html = file_get_html('http://www.google.com/'); - вот тут будет объект

очень точно замечено! спасибо, сделал так:

PHP:
скопировать код в буфер обмена
  1. $html1=$site.$slovo3;
  2. $massa=array();
  3. $html2 = str_get_html($html1); 
  4. foreach($html2->find('.embed_source') as $a4){
  5. $vid=$a4->value;
  6. $html2=str_get_html(html_entity_decode($vid));
  7. $vid=$html2->find('iframe',0)->src;
  8. $massa[]=$vid;
  9. }



теперь код по парсу видео выглядит так:

PHP:
скопировать код в буфер обмена
  1. $min=0;
  2. $obsmass=array();
  3.  
  4. $div=count($html->find('div[class=expandable]'));
  5. $div--;
  6. $table=$html->find('div[class=expandable]',$div) ;
  7. $site='https://doramatv.live';
  8. $kolvo=count($table->find('a[href]'));
  9. $dd=0;
  10. foreach($table->find('a[href]') as $a3){
  11. $dd++; 
  12. usleep(1000000);       
  13. $slovo3=$a3->href;
  14.  
  15. print_r($slovo3);
  16.        
  17.  
  18.  
  19. $html1=$site.$slovo3;
  20. $massa=array();
  21. $html2 = str_get_html($html1); 
  22. foreach($html2->find('.embed_source') as $a4){
  23. $vid=$a4->value;
  24. $html2=str_get_html(html_entity_decode($vid));
  25. $vid=$html2->find('iframe',0)->src;
  26. $massa[]=$vid;
  27. }
  28. echo '</br>'.$min.' '.count($massa).'</br>';
  29. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  30. $obsmass[]=$massa;
  31. }
  32.  
  33. $arros=array();
  34.  
  35. for($i=0;$i<$min;$i++){
  36. $sez=0;
  37. foreach($obsmass as $o){
  38. $sez++;
  39. $arros[$i][$sez]= "\'".trim(str_replace(''', '', $o[$i]))."\'";  
  40. }}
  41.  
  42. $ender='';
  43. foreach($arros as $es){
  44. $ender.="[".implode(",",$es)."],";    
  45. }
  46.  



Ошибки в функции нет, но видео не спарсено(
Что дальше не так может быть?
(Добавление)
Затык получается в следующем:

благодаря куску кода:

Спойлер (Отобразить)


мы нашли все ссылки, одна из них и есть вложение, по которому нам надо перейти и там уже спарсить видео:
результат поиска куска кода:

/list/votes/creation/19385
0 0
/internal/topic/manga/19385
0 0
/rss/manga?name=reinkarnaciia_korolia_obezian
0 0
/internal/modal/editBookmark?type=&id=19385
0 0
https://grouple[dot]co/private/
0 0
/reinkarnaciia_korolia_obezian/s eries0 -это наша ссылка
0 0
/list/genre/melodrama
0 0
/list/genre/action
0 0
/list/genre/fighting
0 0
/list/genre/romance
0 0
/list/person/sun_wukong
0 0
/list/country/china
0 0
/list/person/haha_he
0 0
/list/person/bernard_he
0 0
/list/year/2018
0 0
/list/person/viktor_beregovyh
0 0


данная наша найденная ссылка должна далее присоединиться с осн.урлу, перейти и там парсить код видео:

PHP:
скопировать код в буфер обмена
  1. $html1=$site.$slovo3;
  2. $massa=array();
  3. $html2 = str_get_html($html1); 
  4. foreach($html2->find('.embed_source') as $a4){
  5. $vid=$a4->value;
  6. $html2=str_get_html(html_entity_decode($vid));
  7. $vid=$html2->find('iframe',0)->src;
  8. $massa[]=$vid;
  9. }
  10. echo '</br>'.$min.' '.count($massa).'</br>';
  11. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  12. $obsmass[]=$massa;
  13. }
  14.  
  15. $arros=array();
  16.  
  17. for($i=0;$i<$min;$i++){
  18. $sez=0;
  19. foreach($obsmass as $o){
  20. $sez++;
  21. $arros[$i][$sez]= "\'".trim(str_replace(''', '', $o[$i]))."\'";  
  22. }}
  23.  
  24. $ender='';
  25. foreach($arros as $es){
  26. $ender.="[".implode(",",$es)."],";    
  27. }



Но этого не происходит, как скрипту понять что именно тот кусок ссылки и нужно прибавлять?
(Добавление)
С вычленением нужной ссылки разобрался, находит лишь нужную, получается не работает кусок кода:
PHP:
скопировать код в буфер обмена
  1. $html1=$site.$slovo3;
  2. $massa=array();
  3. $html2 = str_get_html($html1); 
  4. foreach($html2->find('.embed_source') as $a4){
  5. $vid=$a4->value;
  6. $html2=str_get_html(html_entity_decode($vid));
  7. $vid=$html2->find('iframe',0)->src;
  8. $massa[]=$vid;
  9. }
  10. echo '</br>'.$min.' '.count($massa).'</br>';
  11. if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
  12. $obsmass[]=$massa;
  13. }
  14.  
  15. $arros=array();
  16.  
  17. for($i=0;$i<$min;$i++){
  18. $sez=0;
  19. foreach($obsmass as $o){
  20. $sez++;
  21. $arros[$i][$sez]= "\'".trim(str_replace('&#39;', '', $o[$i]))."\'";  
  22. }}


не прибавляет нашу найденную ссылку к основному урлу и не парсит в нем видео(

(Отредактировано автором: 12 Апреля, 2020 - 22:22:19)

 
 Top
rasl89
Отправлено: 13 Апреля, 2020 - 22:16:46
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Коллеги, кто поможет?
 
 Top
rasl89
Отправлено: 16 Апреля, 2020 - 22:10:19
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




ребят, помогите с таким вопросом, есть код:
PHP:
скопировать код в буфер обмена
  1. $html2 = str_get_html($html1);
  2. foreach($html2->find('.embed_source') as $a4){    //ищем в полученном УРЛе код видео
  3. $vid=$a4->value;
  4.         print_r($vid);
  5. $html2=str_get_html(html_entity_decode($vid));
  6. $vid=$html2->find('iframe',0)->src;   // вычленяем iframe ссылку на видео
  7. $massa[]=$vid;


дебаггер пишет:
Warning: Invalid argument supplied for foreach()
на строку:
PHP:
скопировать код в буфер обмена
  1. foreach($html2->find('.embed_source') as $a4){
  2. $vid=$a4->value;


Получается не может перебрать потому что это не массив, как быть?
Проверить на массив is_array? Что это даст?
Может быть через условный оператор? if массив то, если не массив, то - подскажите как будет выглядеть код?
 
 Top
LIME
Отправлено: 17 Апреля, 2020 - 12:47:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




rasl89 пишет:
Может быть через условный оператор? if массив то, если не массив, то - подскажите как будет выглядеть код?
да
или так
PHP:
скопировать код в буфер обмена
  1. $html2 = str_get_html($html1);
  2. $sources = $html2->find('.embed_source') ?? [];
  3. foreach($sources as $a4) {
  4.  
 
 Top
LIME
Отправлено: 17 Апреля, 2020 - 16:18:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ты вообще уверен что '.embed_source' присутствует в исходном коде страницы? Оно точно не подгружается в фоне?
https://learn[dot]javascript[dot]ru/devtools
смотри вкладку сети
 
 Top
rasl89
Отправлено: 17 Апреля, 2020 - 18:09:35
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




LIME пишет:
ты вообще уверен что '.embed_source' присутствует в исходном коде страницы? Оно точно не подгружается в фоне?
https://learn[dot]javascript[dot]ru/devtools
смотри вкладку сети


Да, вот же он:
CODE (html):
скопировать код в буфер обмена
  1. <input type="hidden" name="embed_source" class="embed_source" value="<iframe src="//ok.ru/videoembed/1640644741822" allow="autoplay" allowfullscreen=""></iframe>" id="embed_source">

(Отредактировано автором: 17 Апреля, 2020 - 18:12:20)

 
 Top
rasl89
Отправлено: 17 Апреля, 2020 - 18:15:18
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Март 2020  
Откуда: Россия, Уфа


Помог: 1 раз(а)




Скрин из просмотра кода вложил
Прикреплено изображение (Нажмите для увеличения)
23213131.PNG
 
 Top
LIME
Отправлено: 17 Апреля, 2020 - 18:21:35
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




я так и думал
Ctrl+U
вот тут найди для начала
(Добавление)
Chrome
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB