2014-08-29 3 views
1

Я использую Simple html dom для очистки веб-сайта. Проблема, с которой я столкнулся, заключается в том, что есть текст, расположенный вне любого конкретного элемента. Единственный элемент, который, кажется, внутри, - <div id="content">.Получить текст за пределами элементов

<div id="content"> 
    <div class="image-wrap"></div> 
    <div class="gallery-container"></div> 
    <h3 class="name">Here is the Heading</h3> 

    All the text I want is located here !!! 

    <p> </p> 
    <div class="snapshot"></div> 
</div> 

Я предполагаю, что веб-мастер перепутались и текст должен быть на самом деле внутри <p> тегов.

Я попытался использовать этот код, приведенный ниже, однако он просто не будет извлекать текст:

$t = $scrape->find("div#content text",0); 
    if ($t != null){ 
     $text = trim($t->plaintext); 
    } 

Я еще новичок и все еще учусь. Может ли кто-нибудь помочь вообще?

ответ

1

Вы почти там ... Используйте тестовый цикл для отображения содержимого ваших узлов и найдите индекс требуемого текста. Например:

// Find all texts 
$texts = $html->find('div#content text'); 

foreach ($texts as $key => $txt) { 
    // Display text and the parent's tag name 
    echo "<br/>TEXT $key is ", $txt->plaintext, " -- in TAG ", $txt->parent()->tag ; 
} 

Вы обнаружите, что вы должны использовать индекс 4 вместо 0:

$scrape->find("div#content text",4); 

И если ваш текст оленья кожа всегда один и тот же индекс, но вы знаете, например, что он следует за h3 заголовок, то вы могли бы использовать что-то вроде:

foreach ($texts as $key => $txt) { 
    // Locate the h3 heading 
    if ($txt->parent()->tag == 'h3') { 
     // Grab the next index content from $texts 
     echo $texts[$key+1]->plaintext; 
     // Stop 
     break; 
    } 
} 
+1

Спасибо Enissay, когда я работал, что ваш код делает, все это имело смысл. Отлично работает и является отличным способом решения проблемы. Большое спасибо. – trademark

+0

Собственно, это отлично работает на странице листинга, которую я тестировал, однако на каждой странице листинга на веб-сайте есть текст, который я хочу выделить для другого «текстового номера». Он варьируется от страницы к странице. Есть ли способ обойти это? – trademark

+0

@trademark проверить мой отредактированный ответ ... – Enissay

Смежные вопросы