繁体   English   中英

没有属性的简单Dom HTML标记

[英]Simple Dom HTML tags without attributes

您好,我正在尝试从ESPN.com提取花名册信息。 每个团队的花名册都保存在表格中。 我正在尝试找到一种将每个标签适当地保存到变量中的方法,但是每个标签都没有诸如“ jersey_number” /“ player_name”之类的ID,因此对此进行搜索给了我一些问题。 这是我到目前为止的内容-如果您能给我一个或两个指针,将不胜感激。

    <?php
    require_once("../tools/simple_html_dom.php");
    require_once("../tools/Utilities.php");
    $url = "http://espn.go.com/nfl/team/roster/_/name/den/denver-broncos";

    $espnHTML = file_get_html("http://espn.go.com/nfl/team/roster/_/name/den/denver-broncos");



    foreach($espnHTML->find("table.tablehead",0)->find('tr[class^=odd]') as $rosterRow)
    {
        foreach($rosterRow->find("td") as $playerInfo)
        {
            echo $playerInfo->plaintext."<br>";   
        }

    }
   ?>

如何将这些td标签分配给没有“ id”的适当变量? 随附的示例屏幕截图可以帮助您了解我在说什么。 在此处输入图片说明

如果每个玩家的列顺序都相同,则使用$rosterrow->find("td")应该返回一个索引数组,您可以使用$playerrow[0..n]进行访问。 然后,通过分析与之对应的内容,您可以创建如下函数:

$players = array();
foreach($espnHTML->find("table.tablehead",0)->find('tr[class^=odd]') as $rosterRow)
{
    $playerRow = $rosterRow->find("td");
    $name = $playerRow[0];
    $jersey = $playerRow[1];
    // more can be added, of course.

    $players[$name] = array();
    $players[$name]["jersey"] = $jersey;
    // and others
}

对于表

John Appleseed | 12
---------------|----
Richard Brooks | 34

这将导致像

{ "John Appleseed" => { "jersey" => 12 }, "Richard Brooks" => { "jersey" => 34}}

请告诉我是否有帮助。

如果您愿意采用一种可能更具可扩展性/可靠性的方法,那么您可能还想看看Kimono Labs 您可以使用它基于ESPN的数据创建结构化的API。 我认为您将能够定义表的哪一部分包含名称,分数等,并且可以轻松地为所需信息调用API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM