NHANWEB

Bóc tách dữ liệu: lấy nội dung giữa các tag

Bài toán này dễ gặp nhất khi chúng ta thực hiện việc bóc tách dữ liệu từ các website khác. Kĩ thuật tuy không khó nhưng không phải ai cũng biết :D. Trong bài viết này chúng ta sẽ nghiên cứu xem làm thế nào để lấy dữ liệu giữa các tag.

Phương pháp lấy nội dung từ tag

Bằng cách sử dụng một trong hai hàm preg_match() hoặc preg_match_all(), chúng ta có thể thực hiện dễ dàng:

(.*?)/";
    preg_match($pattern, $string, $matches);
    return $matches[1];
 }
?>

Cách này khá đơn giản và dễ dùng tuy nhiên tốc độ tìm kiếm và code lập trình của bạn sẽ nhiều hơn và ít sáng sủa hơn. Chúng ta hãy cùng xem thử một cách khác: sử dụng DOM function.

loadXML($html);
    }
    else
    {
        $dom->loadHTML($html);
    }

    /*** discard white space ***/
    $dom->preserveWhiteSpace = false;

    /*** the tag by its tag name ***/
    $content = $dom->getElementsByTagname($tag);

    /*** the array to return ***/
    $out = array();
    foreach ($content as $item)
    {
        /*** add node value to the out array ***/
        $out[] = $item->nodeValue;
    }
    /*** return the results ***/
    return $out;
}
?>

Trong đó các giá trị:

$tag :Tag để tìm
$html: nguồn HTML hoặc XML để tìm kiếm.
$strict: cho biết load HTML hay XML. Trong hàm trên chúng ta mặc định load HTML.

Hãy so sánh cách sử dụng để biết cách làm nào tiện dụng và sáng sủa hơn.

Sử dụng cách 1:


Heading

NHANWEB.COM

paragraph here

Paragraph with a LINK TO NHANWEB

This is a broken paragraph

'; $content = getTextBetweenTags('a', $html); foreach( $content as $item ) { echo $item.'
'; } ?>

Sử dụng cách 2



'; $content2 = getTextBetweenTags('para', $xhtml, 1); foreach( $content2 as $item ) { echo $item.'
'; } ?>

Do các kĩ thuật này không giành cho các bạn mới làm quen với PHP (vì các bạn mới làm quen với PHP chắc ít đụng tới việc bóc tách dữ liệu). Cho nên, mình không giải thích nhiều về 2 cái này nữa. Bạn nào hỏi thì mình cố gắng trả lời trong tầm hiểu biết hạn hẹp của mình thôi hen. Mình cũng đang sử dụng cách thứ 2 để bóc tách dữ liệu từ TuoiTre đó các bạn :D

Bạn nào thử bóc tách dùm mình...

Exit mobile version