【问题标题】:How to get a div via PHP?如何通过 PHP 获取 div?
【发布时间】:2011-02-03 19:24:40
【问题描述】:

我使用file_get_contents 从远程服务器获取一个页面,但我想过滤该页面并从中获取一个使用 PHP 的具有“文本”类的 DIV。我从DOMDocument 开始,但现在我迷路了。

有什么帮助吗?

$file = file_get_contents("xx");
$elements = new DOMDocument();
$elements->loadHTML($file);
foreach ($elements as $element) {
    if( !is_null($element->attributes)) {
        foreach ($element->attributes as $attrName => $attrNode) {
            if( $attrName == "class" && $attrNode== "text") {
                echo $element;
            }
        }
    }
}

【问题讨论】:

    标签: php dom parsing html


    【解决方案1】:

    你可以像这里一样使用 simple_html_dom simple_html_dom doc

    或者像这里一样使用我的代码:

    include "simple_html_dom.php";
    $html = new simple_html_dom();
    $html->load_file('www.yoursite.com');
    $con_div = $html->find('div',0);//get value plaintext each html
    

    以明文形式回显 $con_div..

    $con_div->plaintext;
    

    这意味着您将在数组 ('div',0) 中找到第一个 div 并以纯文本形式显示它.. 希望对你有帮助:加油

    【讨论】:

      【解决方案2】:

      就个人而言,我喜欢Simple HTML Dom Parser

      include "lib.simple_html_dom.php"
      
      $html = file_get_html('http://scrapeyoursite.com');
      $html->find('div.text')->plaintext;
      

      很简单吧?它可以容纳 jQuery 之类的选择器 :)

      【讨论】:

      • 谢谢@maček.. 你发布这个可能已经很久了,但我只需要这样的东西。干杯!
      【解决方案3】:

      将文档加载到 DOMDocument 实例后,您可以对其使用 XPath 查询——这可能比自己通过 DOM 更容易。

      为此,您可以使用 DOMXpath 类。


      例如,您应该能够执行以下操作:

      $dom = new DOMDocument();
      $dom->loadHTML($html);
      
      $xpath = new DOMXPath($dom);
      $tags = $xpath->query('//div[@class="text"]');
      foreach ($tags as $tag) {
          var_dump($tag->textContent);
      }
      


      (未测试,因此您可能需要稍微调整 XPath 查询...)

      【讨论】:

      • 仍然产生警告警告:DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';'在实体中,第 5 行不知道为什么
      • 您的文档可能有问题?不过,如果加载正确,您可以使用 @ 运算符 (请参阅 fr.php.net/manual/en/language.operators.errorcontrol.php 来消除该错误。注意:使用该运算符不是一个好习惯,您应该尽可能少地使用它!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2016-08-09
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      相关资源
      最近更新 更多