2015-04-18 4 views
5

Этот код, возвращенный hrefs для контента, теперь я хочу извлечь контент из этого hrefs и отправить его на мой взгляд. Имя дивы, которые мне нужно извлечь:Как извлечь данные с помощью Goutte Crawler?

<div class="c_pad"> 
    <div class="c_label"> 
    <span class="std_header2">Contact:</span> 
    </div> 
<div class="c_name"> 
    <span class="std_text_b">Monkey</span> 
</div> 
<div class="clear"></div> 
</div> 

<div class="c_pad"> 
    <div class="c_label"> 
     <span class="std_header2">Phone number:</span> 
    </div> 
    <div class="c_phone"> 
     <span class="std_text_b">001111111</span> 
    </div> 
    <div class="clear"></div> 
</div> 

for($i=0; $i <= 1; $i++) 
    { 
     $p = new Client(); 
     $d = $p->request('GET', ''.$link.'&std=1&results='. $i); 
     $n = $d->filter('a[class="o_title"]')->each(function ($node) 
     { 
     $pp = new Client(); 
     $dd = $pp->request('GET', $node->attr('href')); 
     $kk = $dd->filter('div[id="adv_desc"]')->each(function ($tekst) { echo $node->attr('href').'<br>'.$tekst->text(); 
        }); 
     }); 
    } 

ответ

3

Вы хотите отфильтровать определенные теги с атрибутами.

Но вы используете $d->filter('a[class="o_title"]'). Фильтрует тег a с атрибутом class="o_title". И это не часть вашего контента.

Вам просто нужно настроить фильтр узла, чтобы выбрать правильные элементы.

Используйте JQuery селекторы Синтаксис: https://api.jquery.com/category/selectors/

Реферирование документацию DomCrawler Symfony, который используется на Goutte: http://symfony.com/doc/current/components/dom_crawler.html#node-filtering

+0

отредактированный первый пост .. но теперь: 'Undefined переменной: node' – user3458952

+0

Вы работая над чем-то, где никто не может вам помочь, потому что мы не можем воспроизвести проблему. Например: где в вашем примере находится 'div' с' id = adv_desc'? Почему «каждый (функция ($ tekst)»? Вывод переменной $ node для проверки содержимого. Var_dump() - ваш друг. –