如何通过PHP获取div?

时间:2010-04-02 17:01:50

标签: php dom parsing html

我从远程服务器使用file_get_contents获取一个页面,但我想过滤该页面并使用PHP从中获取具有类“text”的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;
            }
        }
    }
}

3 个答案:

答案 0 :(得分:9)

将文档加载到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查询...)

答案 1 :(得分:6)

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

include "lib.simple_html_dom.php"

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

很简单,对吧?它适用于像jQuery这样的选择器:)

答案 2 :(得分:0)

您可以像simple_html_dom doc

一样使用simple_html_dom

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

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('div',0)并以纯文本显示它。 我希望它可以帮助你:欢呼