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, нужна помощь [2]

 PHP.SU

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


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

> Без описания
rasl89
Отправлено: 17 Апреля, 2020 - 18:26:19
Post Id



Гость


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


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




LIME пишет:
я так и думал
Ctrl+U
вот тут найди для начала
(Добавление)
Chrome


Там он находится, вот именно
Прикреплено изображение (Нажмите для увеличения)
876876867.PNG

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

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



Гость


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


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




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


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


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


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




rasl89 пишет:
Отладка тоже показывает по нулям
Не понял Не понял первый раз такое вижу!
пыха не знает, а дебар поставил)
эт правильно
учись дебажить
PHP:
скопировать код в буфер обмена
  1. $html2 = str_get_html($html1);
  2. $sources = $html2->find('.embed_source');
вот тут и смотри значения всех этих переменных
может ссылка не та
может что-то находит, но не массив
давай, шевели извилины
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $sources = $html2->find('.embed_source') ?? [];
так у тебя нет шансов увидеть что находит на самом деле
без ??
 
 Top
rasl89
Отправлено: 17 Апреля, 2020 - 18:56:07
Post Id



Гость


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


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




LIME пишет:
rasl89 пишет:
Отладка тоже показывает по нулям
Не понял Не понял первый раз такое вижу!
пыха не знает, а дебар поставил)
эт правильно
учись дебажить
PHP:
скопировать код в буфер обмена
  1. $html2 = str_get_html($html1);
  2. $sources = $html2->find('.embed_source');
вот тут и смотри значения всех этих переменных
может ссылка не та
может что-то находит, но не массив
давай, шевели извилины
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $sources = $html2->find('.embed_source') ?? [];
так у тебя нет шансов увидеть что находит на самом деле
без ??


Ну с чего-то надо начинать))

Вообще я в ступоре уже, голову сломал((( я понимаю что проблема тут:
PHP:
скопировать код в буфер обмена
  1. $html2 = str_get_html($html1);
  2. $sources = $html2->find('.embed_source');

кучу вариация попробовал, но никак!

Цитата:
так у тебя нет шансов увидеть что находит на самом деле
без ??

а тут не понял, можешь пояснить?
(Добавление)
может из=за того что type="hidden" поэтому не парсит?
Я уже не знаю что думать.
Какие еще могут быть варианты спарсить это место? Огорчение
(Добавление)
Может быть я тут накосячил а?
Т.к. видео во вложенной ссылке на старнице, вычленяем эту ссылку

PHP:
скопировать код в буфер обмена
  1. $div=count($html->find('div[class=expandable chapters-link]'));
  2. $div--;
  3. $table=$html->find('div[class=expandable chapters-link]',$div) ;
  4. $site='https://doramatv.live';
  5. $kolvo=count($table->find('a[href]'));
  6. $dd=0;
  7.  
  8. foreach($table->find('a[href]') as $a3){
  9. $dd++; 
  10. usleep(1000000);       
  11. $slovo3=$a3->href;
  12. //print_r($slovo3);
  13.        
  14.  


После вычленения ссылки, составляем теперь полный урл:
PHP:
скопировать код в буфер обмена
  1.  
  2. $html1=$site.$slovo3;
  3. //echo $html1;
  4. $massa=array();
  5. $html2 = str_get_html($html1);
  6. $sources = $html2->find('.embed_source') ?? [];
  7. foreach($sources as $a4) {
  8.     $vid = $a4->value;
  9.     print_r($vid);
 
 Top
rasl89
Отправлено: 18 Апреля, 2020 - 15:16:28
Post Id



Гость


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


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




Вопрос,

Есть вот такие перменные:
PHP:
скопировать код в буфер обмена
  1. foreach($html->find('span[class=elem_actor]') as $list2){
  2. $elem_actor=$list2->innertext;
  3.         echo $elem_actor;
  4.         }
  5.  
  6. foreach($html->find('span[class=elem_genre]') as $list3){
  7. $elem_genre=$list3->innertext;
  8.         echo $elem_genre;
  9.         }
  10.  
  11. foreach($html->find('span[class=elem_country]') as $list4){
  12. $elem_country=$list4->innertext;
  13.         echo $elem_country;
  14.         }
  15.  
  16. foreach($html->find('span[class=elem_director]') as $list5){
  17. $elem_director=$list5->innertext;
  18.         echo $elem_director;
  19.         }


На выходе получаем строки, все хорошо, спарсены Актеры, Страны и тд

но при попытке вывести их так:

PHP:
скопировать код в буфер обмена
  1. $finaly="text-1|$elem_year||text-2|$elem_country||text-4|$elem_translator||text-6|$duration||text-7|$elem_director||text-8|$elem_actor||".$ender.$poster;


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

Помогите? Что не так?
(Добавление)
пробовал через implode преобразовать, к примеру актеров, не помогло
 
 Top
LIME
Отправлено: 18 Апреля, 2020 - 15:57:01
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. $elem_actor[] = $list2->innertext;
 
 Top
rasl89
Отправлено: 18 Апреля, 2020 - 17:29:08
Post Id



Гость


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


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




LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $elem_actor[] = $list2->innertext;


спасибо за ответ.
но в таком случае браузер будет просто выводить Array
 
 Top
LIME
Отправлено: 18 Апреля, 2020 - 18:00:50
Post Id


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


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


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




а как еще ты хотел несколько значений в одну переменную положить?
я с тя удивляюсь
дальше вариант через implode или циклом пробежаться
смотря для чего тебе это
 
 Top
rasl89
Отправлено: 18 Апреля, 2020 - 19:43:29
Post Id



Гость


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


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




LIME пишет:
а как еще ты хотел несколько значений в одну переменную положить?
я с тя удивляюсь
дальше вариант через implode или циклом пробежаться
смотря для чего тебе это


все верно implode и готово! что-то меня заглючило и я начал проcто массив выводить Однако

Спасибо!
 
 Top
LIME
Отправлено: 19 Апреля, 2020 - 12:03:03
Post Id


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


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


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




rasl89 пишет:
Там он находится, вот именно
а ты открой отдельно эту ссылку в другом браузере
или в инкогнито
возможно там проверяются куки/реферер/кастомные заголовки
 
 Top
rasl89
Отправлено: 19 Апреля, 2020 - 15:38:53
Post Id



Гость


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


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




LIME пишет:
rasl89 пишет:
Там он находится, вот именно
а ты открой отдельно эту ссылку в другом браузере
или в инкогнито
возможно там проверяются куки/реферер/кастомные заголовки


Смотрел и через инкогнито и через другие браузеры, все в исходном коде отображается, но парсер отказывает парсить.

Нужно спарсить код видео:
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" />


Часть кода, которая парсит:
PHP:
скопировать код в буфер обмена
  1.  
  2.         $massa = array();
  3.         $html2 = str_get_html($html1);
  4.         $sources = $html2->find('.embed_source') ?? [];
  5.         foreach ($sources as $a4) {
  6.             $vid = $a4->value;
  7.             //print_r($vid);
  8.  
  9.             $html2 = str_get_html(html_entity_decode($vid));
  10.             $vid = $html2->find('iframe', 0)->src;
  11.             $massa[] = $vid;
  12.             //print_r($massa);
  13.  
 
 Top
LIME
Отправлено: 19 Апреля, 2020 - 15:49:52
Post Id


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


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


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




ага
тут налицо невалидный html
видимо simpleHtmlDom просто не справляется с таким наглым нарушением
попробуй регуляркой спарсить
или для начала просто увидь class="embed_source" в дебагере в полученном контенте
или strpos
давай давай
учись думать
придумывай гипотезы и проверяй
 
 Top
rasl89
Отправлено: 19 Апреля, 2020 - 17:43:16
Post Id



Гость


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


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




LIME пишет:
ага
тут налицо невалидный html
видимо simpleHtmlDom просто не справляется с таким наглым нарушением
попробуй регуляркой спарсить
или для начала просто увидь class="embed_source" в дебагере в полученном контенте
или strpos
давай давай
учись думать
придумывай гипотезы и проверяй


LIME, представлялешь в чем проблема была:



Заменено на:



Проблема решилась, иду дальше! Ламер
 
 Top
LIME
Отправлено: 19 Апреля, 2020 - 17:55:15
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. $html2 = file_get_html($html1);
  2.  
в дебагере же видно что $html2 не получается нормальной dom моделью
видно же что что-то не так
какие- то ерроры там появились наверняка внутри
двоечник, учись дебажить
 
 Top
rasl89
Отправлено: 19 Апреля, 2020 - 22:46:11
Post Id



Гость


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


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




Теперь началась бодяга с PHP7, а именно с мускулом:

пытаюсь так:
PHP:
скопировать код в буфер обмена
  1.  
  2. require ('db.php'); //функция для подключния к бд
  3.  
  4.     $save['xfields'] = $finaly;
  5.     $save['date'] = date("Y-m-d h:m:i");
  6.     $save['title'] = mysqli_real_escape_string($names);
  7.     $save['short_story'] = mysqli_real_escape_string(trim($description));
  8.     $save['descr'] = mysqli_real_escape_string(trim($description));
  9.     $save['alt_name'] = str_replace('/', '', parse_url($url, PHP_URL_PATH));
  10.     $save['allow_comm'] = 1;
  11.     $save['allow_main'] = 1;
  12.     $save['approve'] = 1;
  13.     $save['allow_br'] = 1;
  14.     $save['autor'] = 'admin';
  15.     $save['category'] = $_POST['cat'];
  16.  
  17.     $post_id = db::getInstance()->insert('dle_post', $save);
  18.  
  19.  
  20.     $save['news_id'] = $post_id;
  21.     $save['allow_rate'] = 1;
  22.     $save['editdate'] = mktime();
  23.     $save['editor'] = 'admin';
  24.     $save['user_id'] = 1;
  25.     db::getInstance()->insert('dle_post_extras', $save);
  26.     echo("Успешно добавлено : " . $post_id . "-" . $save['alt_name'] . '.html');
  27.     unset($save);
  28.  


для еще должен быть идентификатор, но у меня его нет(((
Файл db приложил, там все сделано через класс!

Таким образом имеем ошибку соответственно:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in

Так пробовал:


Какие еще у меня есть варианты? Казалось бы идентификатор $cfg, но нет...
 
 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