Những nhà phát triển trang web hiện nay có nhu cầu dữ liệu rất nhiều, vì càng nhiều dữ liệu sẽ làm cho website của bạn phong phú hơn, đa dạng hơn và thu hút được nhiều truy cập hơn. Nhưng làm sao để có nhiều dữ liệu nhanh nhất, ít tốn chi phí nhất, và tiết kiệm thời gian nhất?… Các bạn nên biết đến phương pháp lấy dữ liệu từ website khác bằng PHP. Hãy cùng theo dõi bài viết dưới đây để hiểu rõ hơn nhé.
Các cách lấy dữ liệu từ website khác bằng PHP đơn giản
Sử dụng snoopy
Bạn download snoopy về và bắt đầu thực hiện hàm snoopy như sau:
1234567891011121314151617181920 | <?php require(‘Snoopy.class.php’); // nhúng thư viện snoopy từ gói tải về $snoopy = new Snoopy; // tạo đối tượng $url = “http://www.dammio.com”; $snoopy->fetch($url); // đọc nội dung $lines_string = $snoopy->results; // lưu theo các dòng echo $lines_string; // hiển thị dữ liệu ?> |
Sử dụng fsockopen()
Sử dụng hàm fsockopen() để lấy dữ liệu từ website khác thông qua cổng 80:
12345678910111213141516171819202122232425262728293031 | <?php $fp = fsockopen(“dammio.com”, 80, $errno, $errstr, 30); // mở socket lấy dữ liệu từ server if (!$fp) { echo “$errstr ($errno) n”; } else { $out = “GET / HTTP/1.1rn”; $out .= “Host: t.qq.comrn”; $out .= “Connection: Closernrn”; fwrite($fp, $out); // lấy dữ liệu while (!feof($fp)) { echo fgets($fp, 128); // hiển thị dữ liệu } fclose($fp); } ?> |
Sử dụng cURL
Để giúp bạn có thể lấy dữ liệu từ website khác bằng PHP bằng cách sử dụng cURL, đầu tiên bạn cần kích hoạt chức năng trong tập tin php .ini.
Sau đó bỏ chú thích ở dòng extension = php_curl.dll.Cùng lúc bannj cài đặt cURL ở Linux.
Có các trường hợp khác nhau:
Nếu bạn đang sử dụng gói XAMPP ở Windows thì thực hiện những bước sau đây:
- Bước thứ 1: Mở các tập tin:
- C:\Program Files\xampp\php\php4\php.ini
- C:\Program Files\xampp\php\php.ini
- C:\Program Files\xampp\apache\bin\php.ini
- Bước thứ 2: Bỏ chú thích (;) ở dòng sau tập tin php.ini,
1 | ;extension=php_curl.dll |
sang
1 | extension=php_curl.dll |
- Bước thứ 3: Cho khởi động server Apache và sử dụng hàm phpinfo() để kiểm tra cURL
123456789101112131415161718192021 | <?php $url=’https://www.bkns.vn’; $ch=curl_init(); $timeout=5; // thời gian đợi để lấy dữ liệu curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $lines_string=curl_exec($ch); // lấy nội dung theo URL curl_close($ch); // giải phóng tài liệu sau khi lấy dữ liệu echo $lines_string; // hiển thị dữ liệu ?> |
Sử dụng các hàm close, fopen() và fread()
Các hàm trên có chức năng là đóng tập tin, đọc nguồn dữ liệu, mở tập tin giúp lấy dữ liệu từ trang bkns
1234567891011121314151617181920212223242526272829 | <?php $url=’https://www.bkns.vn’; $handle = fopen($url,”rb”); // mở tập tin theo đường dẫn, “rb” có nghĩa là mở tập tin (đường dẫn) không phải là dạng văn bản. $lines_string=””; // đọc nội dung do{ $data=fread($handle,1024); if(strlen($data)==0) { break; } $lines_string.=$data; }while(true); fclose($handle); // đóng nguồn dữ liệu sau khi đọc xong echo $lines_string; // hiển thị dữ liệu kết quả ?> |
Sử dụng file_get_contents()
Sử dụng hàm file_get_contents() để có thể lấy dữ liệu website khác thì bạn cần kích hoạt chức năng allow_url_fopen nằm trong tập tin php.ini, với thiết lập allow_url_fopen = On.
123456789 | <?php $url = ‘https://www.bkns.vn’; $lines_string = file_get_contents($url); echo htmlspecialchars($lines_string); // hiển thị dữ liệu ?> |
Sử dụng file() trong PHP
Có thể sử dụng PHP để thực hiện chức năng lấy dữ liệu từ URL của trang web khác.
1234567891011 | <?php $url=’https://www.bkns.vn’; // tạo biến url cần lấy $lines_array=file($url); // dùng hàm file() lấy dữ liệu theo url $lines_string=implode(”,$lines_array); // chuyển dữ liệu lấy được kiểu mảng thành một biến string echo $lines_string; // hiển thị dữ liệu ?> |
Mong rằng bài viết cách lấy dữ liệu từ website khác bằng PHP sẽ hữu ích đối với bạn. Chúc bạn thành công!
Trả lời