7

Possible Duplicate:
HTML Scraping in Php

I would like to know if is there any way to get from a webpage a specific string of text wich is updated every now and then using PHP. I´ve searched "all over the internet" and have found nothing. Just saw that preg_match could do it, but I didn't understand how to use it.

imagine that a webpage contains this:

<div name="changeable_text">**GET THIS TEXT**</div>

How can I do it using PHP, after having used file_get_contents to put the page in a variable?

Thanks in advance :)

Community
  • 1
  • 1
Daniel Silva
  • 372
  • 2
  • 4
  • 14

4 Answers4

15

You can use DOMDocument, like this:

$html = file_get_contents( $url);

libxml_use_internal_errors( true);
$doc = new DOMDocument;
$doc->loadHTML( $html);
$xpath = new DOMXpath( $doc);

// A name attribute on a <div>???
$node = $xpath->query( '//div[@name="changeable_text"]')->item( 0);

echo $node->textContent; // This will print **GET THIS TEXT**
nickb
  • 59,313
  • 13
  • 108
  • 143
2

You might want to have a look at the

Simple HTML DOM Library

There is a little tutorial here: http://www.developertutorials.com/tutorials/php/easy-screen-scraping-in-php-simple-html-dom-library-simplehtmldom-398/

That one is a screen scraping API that lets you feed html to it and then get parts of it in a jQuery similiar language.

Kai Mattern
  • 3,090
  • 2
  • 34
  • 37
0

You’re talking about data scraping: the act of extracting data from a human readable output. In your case this is whatever is between the <div> tags. Use PHP DOM’s extension to get to the tag you want and extract data. Google search for a PHP DOM tutorial.

Celeritas
  • 14,489
  • 36
  • 113
  • 194
0
$delements= file_get_html('url will go here'); 

foreach($elements->find('element') as $ele) {

    //traverse according to your preferences

} 

//return or output
chiwangc
  • 3,566
  • 16
  • 26
  • 32