Crawl dữ liệu từ web sử dụng php
Bài đăng này đã không được cập nhật trong 7 năm
Hôm nay, mình sẽ giới thiệu với các bạn về việc lấy dữ liệu từ cách website khác bằng việc sử dụng thư viện trong php. Và thư viện mình giới thiệu hôm nay đó là thư viện PHP Simple HTML DOM Parser
PHP Simple HTML DOM Parser là một thư viện của PHP giúp chúng ta có thể lấy các thuộc tính của các thẻ HTML trong 1 website rất dễ dàng. Nó hỗi trợ một số tính năng như
- Hôĩ trợ bóc tách dữ liệu theo từng id, class hoặc thể img, a, table, ...
- Code ngắn dễ học, dễ viết, dễ nhớ ...
- Khá nhẹ nhàng
Cài đặt Để để tải thư viện này bạn có thể lên trang chủ của nó tại địa chỉ http://simplehtmldom.sourceforge.net/ để tải về. Sau khi có thư viện bạn copy file simple_html_dom.php vào dự án của mình và include file đó vào file bạn muốn lấy dữ liệu để sử dụng. Các khác bạn có thể cài đặt nó thông qua composer. Sử dụng Thư viện này rất dễ sử dụng. Mình tìm hiểu qua một số tính năng của thư viện. Đọc nội dùng của một file.
$html = file_get_html('link của trang web');
echo $html;
Hiển thị tất cả các ảnh
$html = file_get_html('http://www.google.com/');
foreach($html->find('img') as $element) {
echo '<img src="'.$element->src.'" /><br>';
}
Lấy nội dung từ một id cụ thể
$html = file_get_html('http://www.google.com/');
$noidung = $html->find('#ten_id',0);
Truyền số 0 vào đằng sau để lấy ra nội dung đầu tiên trong id của mảng. Các trường hợp lấy theo class, table, p ... cũng lấy tương tự.
Thực hành lấy dữ liệu qua ví dụ cụ thể. Ví dụ 1. Hiển thị toàn bộ nội dung trang web.
<?php
include('simple_html_dom.php');
$url = 'http://thethao.vnexpress.net/photo/hau-truong/hom-nay-hoang-xuan-vinh-ve-nuoc-nguyen-tien-minh-quyet-dau-lin-dan-3452035.html';
$html = file_get_html($url);
echo $html;
?>
Ví dụ 2. Lấy ảnh từ trang web trên
<?php
include('simple_html_dom.php');
$url = 'http://thethao.vnexpress.net/photo/hau-truong/hom-nay-hoang-xuan-vinh-ve-nuoc-nguyen-tien-minh-quyet-dau-lin-dan-3452035.html';
$html = file_get_html($url);
$html->find('.block_thumb_slide_show',0)->outertext='';
$html ->load($html ->save());
$tieude = $html->find('.title_news',0);
$noidung = $html->find('#article_content',0);
?>
<h1><?=$tieude->plaintext?></h1>
<div id="content"><?=$noidung->innertext?></div>
Kết luận Vừa rồi mình mới giới thiệu qua cho các bạn về thư viện PHP Simple HTML DOM Parser để lấy dự liệu từ các trang web khác về web của mình. Tham khảo https://code.tutsplus.com/tutorials/html-parsing-and-screen-scraping-with-the-simple-html-dom-library--net-11856 http://simplehtmldom.sourceforge.net/manual.htm
All rights reserved