我无法检索具有四个类名的特定li-tag的nodevalue。它是唯一标识它的类名“b-programm_ended”。
<?php
$dom = new DOMDocument;
$dom->loadHTMLFile('https://tv.mail.ru/channel/1296/65/');
$xpath = new DOMXPath($dom);
$classname = 'b-programm js-schedule_item js-remind_prnt b-programm_ended';
$results = $xpath->query('//*[@class="'.$classname.'"]');
echo $now = $results->item(0)->nodeValue;
?>
答案 0 :(得分:1)
这不是你真正的问题。
不幸的是,您永远不会能够找到类b-programm_ended
的任何元素。我查看了 https://tv.mail.ru/channel/1296/65/ 的来源,找不到任何b-programm_ended
字符串。但是,我使用Chrome检查了DOM,并且 找到了b-programm_ended
的一些实例。这意味着使用jQuery创建类属性,因此您的服务器端PHP解析将找不到这些标记。
但是,当我检查来自同一站点的XHR请求时,会从
中提取一些JSON数据https://tv.mail.ru/ext/admtv/?sch.favorite_event=1&sch.recommended_main=1&cfg.get=1&sch.main=1&sch.channel=1296
包含您可能要查找的数据,例如:
schedule: [{stop: "2015-04-26 05:15:00", name: "Белохвостые гиганты "Тэкомати"", genre_id: "142",…},…]
0: {stop: "2015-04-26 05:15:00", name: "Белохвостые гиганты "Тэкомати"", genre_id: "142",…}
episode_num: "6"
episode_title: "402-я серия"
genre_id: "142"
id: "36239842"
name: "Белохвостые гиганты "Тэкомати""
start: "2015-04-26 04:50:00"
stop: "2015-04-26 05:15:00"
year: "2013"
...
我的建议是在PHP中使用JSON解析器(json_decode)并方便地从该数据结构中选择您要查找的信息。
答案 1 :(得分:0)
<?php
$dom = new DOMDocument;
$dom->loadHTMLFile('https://tv.mail.ru/channel/1296/65/');
$xpath = new DOMXPath($dom);
$classname = 'b-programm_ended';
$results = $xpath->query('//*[@class="'.$classname.'"]');
echo $now = $results->item(0)->nodeValue;
?>
答案 2 :(得分:0)
由于b程序可以是所需元素的唯一选择器,请尝试以下代码
<?php
error_reporting(0);
$dom = new DOMDocument;
$dom->loadHTMLFile('https://tv.mail.ru/channel/1296/65/');
$xpath = new DOMXPath($dom);
$classname = 'b-programm';
$results = $xpath->query('//*[@class="'.$classname.'"]');
echo $now = $results->item(0)->nodeValue;
?>