2013-03-25 4 views
0

Я пытаюсь скрести данные из результатов по поиску из this websiteскребковые данные с классом simple_html_dom в PHP

Мне сказали, что лучший способ сделать это, чтобы использовать класс simple_html_dom из http://simplehtmldom.sourceforge.net/ The страница результатов очень занята, и у меня возникают проблемы с очисткой моих очищенных данных.

Я получаю содержимое страницы с:

$html = file_get_html('http://www.birthdatabase.com/cgi-bin/query.pl?textfield=' . $first . '&textfield2=' . $last . '&age=&affid='); 

код, который я был любезно Предоставленная:

$n = 0; 
foreach($html->find('table tbody tr td div font b table tbody') as $element) { 
    @$row[$n]['tr'] = $element->find('tr')->text; 
    $n++; 
} 

// output your data 
print_r($row); 

ли это DOM навигация правильно? Есть ли лучший способ получить скребковые данные?

Thanks

+0

У них расширенные селекторы. См. Там онлайн-документацию. Это хорошо документировано – 2013-03-25 03:18:15

+0

Я довольно нуб. Можете ли вы помочь мне улучшить очистку? – ChanCanasta

+0

Вы должны показать свой html exmine мной – 2013-03-25 03:30:31

ответ

1

Вы убили мое время. попробуйте, если это то, что вы хотели: :)

<?php 
include 'simple_html_dom.php'; 

$html = file_get_html('http://www.birthdatabase.com/cgi-bin/query.pl?textfield=richard&textfield2=chun'); 
$people = array(); 
$cell = $html->find('table',2)->find('table',0)->find('tr'); 
$total = count($cell); 
$i = -1; 
foreach($cell as $element){ 
    if($i == -1) { $i++; continue; } 
    if($i == $total-2) break; 
    $people[$i]['f_name'] = $element->find('td',0)->plaintext; 
    $people[$i]['l_name'] = $element->find('td',2)->plaintext; 
    $people[$i]['b_day'] = $element->find('td',3)->plaintext; 
    $people[$i]['city'] = $element->find('td',4)->plaintext; 
    $people[$i]['state'] = $element->find('td',5)->plaintext; 
    $i++; 

} 

var_dump($people); 

?> 
+0

Удивительный! Благодаря!! – ChanCanasta

+0

Разве вы этого не ожидали? – 2013-03-25 06:05:10

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