如何使用dom文件获取div类值

时间:2015-07-19 06:04:47

标签: php html web-scraping domdocument

如何使用dom文档获取div类值

我需要回显此值4,458 members

来自以下代码

< div class="mbs fcg">4,458 members< /div>

现在我的原始代码是

$links = $dom->getElementsByTagName('div');

foreach ($links as $link){

echo $link->nodeValue;
echo $link->getAttribute('class');

}

如何定位此特定class = mbc fcg

现在使用我现在的代码我得到所有div值。

我应该做些什么改变

3 个答案:

答案 0 :(得分:1)

注意::: 这是一个JAVASCRIPT解决方案......不是PHP DOMDOCUMENT解决方案

试试这个HTML:

<div id="ME" class="mbs fcg">4,458 members</div>

...和这个Javascript:

var WANTED_TEXT = document.getElementById('ME').firstChild.nodeValue;

EDIT2:

如果您真的想要,要从所有出现的元素class='mbs cfg'获取所有文本节点...然后尝试以下HTML:

<div class="mbs fcg">4,458 members</div>

...和这个Javascript:

var Collection = document.getElementsByClassName('mbs fcg');

for(i=0; i<Collection.length; i++) {
    Texts = Collection[i].firstChild.nodeValue;
    document.write('<p>'+Texts+'</p>');
}

这应该回应Collection中所有元素的纯文本。

答案 1 :(得分:0)

我认为您需要使用id定位单个div,例如:

< div id="my_id_name" class="mbs fcg">4,458 members< /div>

答案 2 :(得分:0)

您将需要使用DOMXPath,这将采用DOMDocument实例

$xpath   = new DOMXPath( $dom );
// if the className doesn`t changes
$members = $xpath->query( '//div[@class="mbs fcg"]' );
// if the class name changes ex. class="mbs fcg my-other class-name"
$members = $xpath->query( '//div[contains(@class,"mbs fcg")]' );

或者如果你想遍历你的div,你可以尝试

$divs = $dom->getElementsByTagName( 'div' );
foreach( $divs as $div ){
    // if the className doesn`t changes
    if( $div->getAttribute( 'class' ) === 'mbs fcg' ){
        echo $div->nodeValue;
    }
    // if the class name changes ex. class="mbs fcg my-other class-name"
    if( strpos( $div->getAttribute( 'class' ), 'mbs fcg' ) !== false ){
        echo $div->nodeValue;
    }
}