我是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>
非常感谢任何有关如何提取“音乐”(案例无关紧要)的建议。
谢谢:)
答案 0 :(得分:1)
为什么当您通过YouTube Data API提供所需信息时,您会从YouTube.com抓取网页。您可以在不到一分钟的时间内获得类别信息和任何内容。你甚至不需要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
答案 1 :(得分:0)
您可以使用正则表达式
执行此操作$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);