План создания парсера
1. научиться парсить и выводить спарсенное (описание, видео, постер)
2. передавать данные в бд сайта
3. научиться парсить раздел с новостями
Пункт первый плана стартовал, появился затык: не могу спарсить видео (спарсить ссылку на видео из кода плеера), и спарсить постер, если у донора установлен не один скриншот
Пример ссылки: https://doramatv[dot]live/zolotoi_rycar
Пример ссылки с несколькими постерами: https://doramatv[dot]live/reinkarnac[dot][dot][dot]_korolia_obezian
Вопросы:
1. Как спарсить код видео, при условии что ссылка на видео плеер вложена в страницу? подскажите пожалуйста решение с объяснением
2. Как спарсить постер, если их у донора на новость несколько (слайдер)? подскажите пожалуйста решение с объяснением
3. После того, как все спарсено, нужно ли все это собрать в массив для последующей передачи в БД?
Код парсера, а также вложения:
CODE (htmlphp):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <head>
- <title>Dorama.tv parser 2020</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- </head>
- <body>
- <form action="" method="POST">
- <input type="text" name="url" size="50" placeholder="Адрес фильма">
- <input type="submit" value="Спарсить 1 фильм">
- </form>
- </body>
- <?php
- require ('simple_html_dom/simple_html_dom.php'); //подключаем библиотеку DOM
- // Првоеряем заполнено ли поле (ссылка) Адрес фильма
- if (isset($_POST['url'])){ // как вариант использовать empty: if (!empty($_POST['url'])){
- $url = $_POST['url']; //если заполнено, вставляем в переменную
- }
- //Массив для данных
- //$lists = array();
- require ('curl.php'); //подключаем curl
- //Создаем объект библиотеки для парсинга
- $dom = new simple_html_dom();
- $html = str_get_html($answer); //Формируем массив
- //парсинг данных со странеицы:
- foreach($html->find("h1[class=names]") as $list){
- $names=$list->innertext;
- //echo $names;
- //$trimmed_names = trim($names, "Фильм");
- //echo $trimmed_names;
- }
- foreach($html->find("span[itemprop=duration]") as $list1){
- $duration=$list1->innertext;
- echo $duration;
- }
- foreach($html->find("span[class=elem_actor]") as $list2){
- $elem_actor=$list2->innertext;
- echo $elem_actor;
- }
- foreach($html->find("span[class=elem_genre]") as $list3){
- $elem_genre=$list3->innertext;
- echo $elem_genre;
- }
- foreach($html->find("span[class=elem_country]") as $list4){
- $elem_country=$list4->innertext;
- echo $elem_country;
- }
- foreach($html->find("span[class=elem_director]") as $list5){
- $elem_director=$list5->innertext;
- echo $elem_director;
- }
- foreach($html->find("span[class=elem_year]") as $list6){
- $elem_year=$list6->innertext;
- echo $elem_year;
- }
- foreach($html->find("span[class=elem_translator]") as $list7){
- $elem_translator=$list7->innertext;
- echo $elem_translator;
- }
- foreach($html->find("div[class=manga-description]") as $list8){
- $description=$list8->innertext;
- echo $description;
- }
- foreach($html->find("img[data-thumb]") as $poster){
- $poster2=$poster->src;
- }
- $strrandd=strtotime("now");
- file_put_contents($put,file_get_contents($poster2));
- echo "<img src = \"".$poster2."\">";
- /*
- foreach($html->find(".embed_source") as $list9){
- $vid=$list9->value;
- $html=str_get_html(html_entity_decode($vid));
- $vid=$html->find('iframe',0)->src;
- $massa[]=$vid;
- }
- echo '</br>'.$min.' '.count($massa).'</br>';
- if($dd==1){$min=count($massa);}if($min>count($massa)){$min=count($massa);}
- $obsmass[]=$massa;
- */
- /*
- //Выводим массив
- foreach ($lists as $key => $value)
- {
- echo "NAME : " . $key . " DESCRIPTIONS: " . $value . "<br/>";
- }
- */
- ?>