我在检索具有四个类名称的特定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;
?>
最佳答案
这不是您的真正问题。
不幸的是,您将永远无法找到类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"
...
我对您的建议是使用JSON解析器(PHP中的json_decode),并方便地从该数据结构中选择要查找的信息。