我在检索具有四个类名称的特定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),并方便地从该数据结构中选择要查找的信息。

10-02 14:12