我在检索具有四个类名的特定 li-tag 的节点值时遇到问题。唯一标识它的是类名“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)并方便地从该数据结构中挑选出您要查找的信息。
关于php - 如何获取具有多个类名的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875755/