Bóc tách dữ liệu bằng PHP

Sat, 05 Mar 2011

Công việc của mình là bóc tách các chỉ số chứng khoán của các mã giao dịch của HOSE hằng ngày và lưu lại.

Trang web của sàn HOSE: https://www.hsx.vn/

Ở đây mình sẽ sử dụng thư viện simplehtmldom để thực hiện yêu cầu này. Bạn có thể tham khảo thư viện này ở đây: http://simplehtmldom.sourceforge.net/

Sau khi tải về bạn chỉ cần copy file simple_html_dom.php vào dự án của mình là có thể xài được là có thể bắt đầu sử dụng được.

Dưới đây là đoạn code ví dụ các sử dụng thư viện này

include("simple_html_dom.php");
$html = new simple_html_dom();

// 1. Load dữ liệu từ 1 chuỗi HTML có sẵn
$html->load('<html><body>Nội dung HTML</body></html>');

// 2. Load dữ liệu từ một website
$content = file_get_html('https://www.hsx.vn/Modules/StockMember');

Mình sẽ sử dụng cách thứ 2 để lấy HTML từ website về và tiến hành bốc tách dữ liệu các mã chứng khoán.

include("simple_html_dom.php");
$html = file_get_html('https://www.hsx.vn/Modules/StockMember');

$listStocks = $html->find('.stock-item');

$memberStock = array();

// Lặp qua các thẻ có chỉ số chứng khoán được niêm yết
foreach($listStock as $stock) {
  $memberStock[] = array(
        'name' => $stock->children(2)->outertext,
        'value' => $stock->children(3)->first_child()->outertext,
        'change' => $stock->children(4)->outertext,
  );
}

Với đoạn code đơn giản trên mình đã có thể lấy dữ liệu từ trang chứng khoán và lưu lại để so sánh. Quá dễ đúng không nào.

Ngoài ra với thư viện simplehtmldom chúng ta có thể dễ dàng bóc tách dữ liệu từ các trang báo hoặc các tranh truyện bằng cách tìm tới các thẻ chứa nội dung hoặc link hình ảnh.

Ví dụ như sau:

// Tìm các hỉnh ảnh trong trang web
$html->find('img[class=img-part]');

// Tìm thẻ nội dung bằng id của div
$html->find('#title-news');

// Tìm các thẻ a nằm bên trong thẻ h1
$html->find('h1 a');

Hy vọng mọi người sẽ làm được vài điều thú vị với thư viện này.

vn-index

Loading...