Задать вопрос

Как правильно вывести дату при парсинге информаций?

Здравствуйте,
Появилось необходимость сделать парсер информаций с сайта epscape[dot]com.
Собрал простенький php скрипт который парсит что мне нужно, кроме даты :( ...
Подскажите пожалуйста, как можно вывести дату ?

У меня сейчас выводится вот так:
ishleehxrk.pngа мне нужно так:
9sinichz4n.png
<?php
// Это адрес сайта, мы записываем его с переменную $pageurl 
$pageurl = 'http://epscape.com/calendar/next'; // http://epscape.com/calendar/next


// Получаем полный html текст страницы и сохраняем в переменную $html
$html = file_get_contents($pageurl);

// меняем кодировку на utf-8
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'utf-8');

// отключаем вывод ошибок из-за неправильного html кода
libxml_use_internal_errors(TRUE);

// тут мы создаем объект класса domDocument 
$dom = new DOMDocument(); 

// И загружаем в него html код 
$dom->loadHTML($html); 
$xpath = new DomXPath($dom);



// задаём радиус парсинга
$radius = $xpath->query('//div[@class="left-side"]/*');

$i=0;
foreach($radius as $radiu) {
$img = $xpath->query("//div[contains(@class, 'episodes-image')]//img")->item($i)->getAttribute('src');

$title = $xpath->query("//div[contains(@class, 'shrutitle')]/a")->item($i)->nodeValue; 

$original_title = $xpath->query("//div[contains(@class, 'shtitle')]")->item($i)->nodeValue; 

$episode_name = $xpath->query("//div[contains(@class, 'eptitle')]")->item($i)->nodeValue; 

$date = $xpath->query("//div[contains(@class, 'date')]")->item($i)->nodeValue; 

$i++;


echo $img. '| ' .$title. '| ' .$original_title. '| ' .$episode_name. '<br />';


}
?>


Также хотелось бы услышать ваше мнение, на сколько собранный мною код плох ?)
  • Вопрос задан
  • 275 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
@OVK2015
function getEpscapeData($content)
	{		
		$regExpDateWrapper =
			"#".
			"(?=<div class=\"epdate\">)(?:.*?)(\d{1,2}\s.*?)(?:</span>|</small></h5>)(?:</div>)".
			"(?:(?:<div class=\"episode\">)(.*?)(?:</div></div></div>))+".
			"#si";		
		$regExpMovieWrapper = 
			"#".
			"(?:<div class=\"episode\">)(?:.*?)".
			"(?:<a href=\")(.*?)\"(?:.*?)".
			"(?:<div class=\"shrutitle\"><a(?:.*?)>)(.*?)(?:</a>)".
			"(?:.*?)(?:class=\"shtitle\">)(.*?)</div>".
			"(?:.*?)(?:class=\"eptitle\"><b>)(.*?)(?:</b>\s{0,})(.*?)".
			"(?:</div></div></div>)".
			"#si";
		preg_match_all($regExpDateWrapper, $content, $dateMatches, PREG_SET_ORDER);		
		foreach($dateMatches as $currentDate) 
		{			
			echo iconv("UTF-8", "CP1251", $currentDate[1])."\n";

			preg_match_all($regExpMovieWrapper, $currentDate[0], $movieMatches, PREG_SET_ORDER);
			foreach($movieMatches as $currentMovie) 
			{
				$movieInfo = 
					"Link: ".$currentMovie[1]."\n".
					"Название сериала: ".$currentMovie[2]."\n".
					"Оригинальное название: ".$currentMovie[3]."\n".
					"Название эпизода: ".$currentMovie[4]." ".$currentMovie[5]."\n\n";
				echo iconv("UTF-8", "CP1251", $movieInfo);	
			}
			echo "*********************************\n";
		}		
	}


Держите код. По мне, так regExp в данном случае лучше, чем xpath. Шустрее будет, чем с DOM в PHP возиться.
У меня вопрос: а вы, часом, похожие сайты не знаете?

Так, ну примерно так:
javascript:

var pageIndex=1;
$.ajax
    		({
                url: 'путь к php файлу',                
                data: {pageIndex: pageIndex},
                type: 'get',
                success: function(answer)
                {
                        // Добавляем результат на страницу
                	console.log(answer);    
                        pageIndex += 3;            	
                },
                error: function(error)
                {
                	console.log('Ошибка');
                    console.log(error);
                }
     		});


В php
$answer = "";
$url = "http://epscape.com/calendar/next/";

$pageIndex = $_REQUEST['pageIndex'];
for($counter = 0; $counter < 3; $counter++)
{
   $answer .= getEpscapeData($url.($counter + 1));
}
echo $answer;

function getEpscapeData($url)
{
........
return recievedData;
}


В кратце как-то так. На смарте не удобно писать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
Придраться практически всегда можно к любому коду.
Однако хочу Вас похвалить за то, что используете xpath, а не парсите регулярками, как это делает немалое количество людей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы