How to scrape html contents of one div by id using php

AidanAshby picture AidanAshby · Aug 8, 2013 · Viewed 13.7k times · Source

The page on another of my domains which I'd like to scrape one div from contains:

<div id="thisone">
    <p>Stuff</p>
</div>

<div id="notthisone">
    <p>More stuff</p>
</div>

Using this php...

<?php
    $page = file_get_contents('http://thisite.org/source.html');
    $doc = new DOMDocument();
    $doc->loadHTML($page);
    foreach ($doc->getElementsByTagName('div') as $node) {
        echo $doc->saveHtml($node), PHP_EOL;
    }
?>

...gives me all divs on http://thisite.org/source.html, with html. However, I only want to pull through the div with an id of "thisone" but using:

foreach ($doc->getElementById('thisone') as $node) {

doesn't bring up anything.

Answer

SoWhat picture SoWhat · Aug 8, 2013
$doc->getElementById('thisone');// returns a single element with id this one

Try $node=$doc->getElementById('thisone'); and then print $node

On a side note, you can use phpQuery for a jquery like syntext: pq("#thisone")