Я получаю страницу с использованием 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; } } } }
После того, как вы загрузили документ в экземпляр 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 …)
Лично мне нравится Simple HTML Dom Parser .
include "lib.simple_html_dom.php" $html = file_get_html('http://scrapeyoursite.com'); $html->find('div.text')->plaintext;
Довольно просто, да? Он вмещает селектора, такие как jQuery 🙂
вы можете использовать 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