PHP, чтобы получить информацию о категории от YouTube - PullRequest
0 голосов
/ 13 февраля 2012

Я новичок в PHP и работаю над сценарием, который может извлечь заголовок / описание / теги (или ключевые слова) с веб-страницы Youtube. Например, возьмите любую страницу YouTube, например, http://www.youtube.com/watch?v=yADOdeZTD9c .. это код HTML содержит

<meta name="keywords" content="nirvana, unplugged, performing, tocando, cantando, come, as, you, are, Come, As, You, Are, nevermind, live, en, vivo, 1992, 1993, acoustic, acustica, complet...">

Мой код может извлечь ключевые слова из вышеуказанной строки. Соответствующая часть кода приведена ниже:

            $meta_elements = $pageDOM->getElementsByTagName('meta');
            foreach ($meta_elements as $meta_element) {
                if (strtolower($meta_element->getAttribute('name')) == 'description')
                {
                    $aValues['description'] = $meta_element->getAttribute('content');

                    echo $meta_element->getAttribute('content'); 

                }
            }

Я пытался изменить его, чтобы извлечь информацию о категории, но я не могу этого сделать, поскольку имя категории не может быть извлечено так же, как ключевые слова или описание.

Я думаю, что часть в HTML-коде веб-сайта, откуда я могу извлечь категорию, такова:

Category:
</h4>
    <p id="eow-category"><a href="/music">Music</a></p>

Любые предложения относительно того, как извлечь "Музыка" (случай не имеет значения), очень ценятся.

Спасибо:)

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

С какой стати вы будете чистить страницы с YouTube.com, когда необходимая информация доступна через API данных YouTube .Вы можете получить информацию о категории и о чем угодно менее чем за одну минуту.Вам даже не нужен PHP.Просто запустите этот пример кода в консоли:

function youtubeDataCallback(json){
    console.log(json);
    alert(json.data.category);
}
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://gdata.youtube.com/feeds/api/videos/yADOdeZTD9c?v=2&alt=jsonc&callback=youtubeDataCallback";
document.getElementsByTagName("head")[0].appendChild(s);

Код PHP намного проще.Вам просто нужно 2-3 строки кода.

Сказав это, что это даст вам?

$pageDOM->getElementById("eow-category")->getElementsByTagName("a")->item(0)->nodeValue
0 голосов
/ 13 февраля 2012

Вы можете сделать это, используя регулярные выражения

$index = file_get_contents('http://www.youtube.com/watch?v=yADOdeZTD9c');
preg_match_all('#dir="ltr" title="(?:.*?)">(.*?)</span>#isu', $index, $title);
$youtube['title'] = trim ($title[1][0]);
preg_match_all('#<p id="eow-description" >(.*?)</p>#isu', $index, $about);
$youtube['about'] = trim ($about[1][0]);
preg_match_all('#<p id="eow-category"><a href="/(?:.*?)">(.*?)</a></p>#isu', $index, $cat);
$youtube['cat'] = trim ($cat[1][0]);
preg_match_all('#search=tag">(.*?)</a></li>#isu', $index, $tag);
$youtube['tag'] = $tag[1];
print_r($youtube);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...