Как получить div через PHP? - PullRequest
3 голосов
/ 02 апреля 2010

Я получаю страницу с помощью file_get_contents с удаленного сервера, но я хочу отфильтровать эту страницу и получить от нее DIV с классом «текст» с помощью PHP. Я начал с 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 ]

9 голосов
/ 02 апреля 2010

После того, как вы загрузили документ в экземпляр 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 ...)

6 голосов
/ 02 апреля 2010

Лично мне нравится Простой HTML Dom Parser .

include "lib.simple_html_dom.php"

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

Довольно просто, а?Он поддерживает селекторы, такие как jQuery:)

0 голосов
/ 12 ноября 2013

вы можете использовать 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 в массиве ('div', 0) и покажете его в виде открытого текста. Я надеюсь, что это поможет вам: cheer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...