【问题标题】:Simple HTML DOM Parser - find class with random number简单的 HTML DOM 解析器 - 使用随机数查找类
【发布时间】:2015-09-08 09:13:17
【问题描述】:

我正在尝试从一个网站上抓取数据。我坚持收视率。 他们有这样的东西:

<div class="rating-static rating-10 margin-top-none margin-bottom-sm"></div>
<div class="rating-static rating-13 margin-top-none margin-bottom-sm"></div>
<div class="rating-static rating-46 margin-top-none margin-bottom-sm"></div>

rating-10 实际上是一星,rating-13 在我的情况下是两星,rating-46 在我的脚本中将是五星。

评分范围可以是 0-50。

我的计划是创建switch,如果我的班级范围是 1-10,我会知道这是一颗星,从 11-20 是两颗星,依此类推。

任何想法,任何帮助将不胜感激。

【问题讨论】:

  • 其实我什么都没尝试,因为我没有想法。我真的被困住了。例如,我可以通过“rating-static”类来获取该元素,但我如何才能确定什么是评级?我完全糊涂了。 @KhorneHoly 你有什么建议吗?我马上试试。
  • @PottaG 试试下面的代码,它会给你预期的输出
  • @PottaG 我写了一个答案,看看吧。我没有测试它,但它应该可以工作并给你基本的想法

标签: php html dom html-parsing


【解决方案1】:

试试这个

<?php
$data = '<div class="rating-static rating-10 margin-top-none margin-bottom-sm"></div>';
$dom = new DOMDocument;
$dom->loadHTML($data);
$xpath = new DomXpath($dom);
$div = $dom->getElementsByTagName('div')[0];
$div_style = $div->getAttribute('class');
$final_data = explode(" ",$div_style);
echo $final_data[1];
?>

这将为您提供预期的输出。

【讨论】:

    【解决方案2】:

    我有一个类似的项目,如果你想解析整个 HTML 站点,这应该是这样做的方法

    $dom = new DOMDocument();
    $dom->loadHTML($html); // The HTML Source of the website
    
    foreach ($dom->getElementsByTagName('div') as $node){
    
        if($node->getAttribute("class") == "rating-static"){ 
    
            $array = explode(" ", $node->getAttribute("class"));
            $ratingArray = explode("-", $array[1]); // $array[1] is rating-10
    
            //$ratingArray[1] would be 10
            // do whatever you like with the information
        }
    }
    

    可能是您必须将if 部分更改为strpos 检查,我尚未测试此脚本,但我认为getAttribute("class") 返回所有类。这将是 if 语句 then

    if(strpos($node->getAttribute("class"), "rating-static") !== false)
    

    【讨论】:

    • 谢谢,但 Keval 的回答是第一位的,我使用了这个 getAttribute('class') 谢谢我们俩。
    【解决方案3】:

    仅供参考,请尝试使用Querypath 来满足未来的解析需求。它只是 PHP DOM 解析器的一个包装器,并且工作得非常好。

    【讨论】:

      猜你喜欢
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2017-07-30
      • 2019-12-18
      • 1970-01-01
      相关资源
      最近更新 更多