Giải pháp hiệu quả tăng Traffic cho website
Traffic Exchange Site

Tạo thử một crawler

By
( Khởi nghiệp với Internet)
Đầu tiên chúng ta cần tạo ra 1 crawler, tôi tạo 1 class Crawler
Tiếp theo, tiến hành thêm các hàm cần thiết để nó có thể hoạt động. Chúng ta này cần làm 2 việc quan trọng:

Lấy dữ liệu thô: Tải trang web được chỉ định về.
Lọc dữ liệu: yêu cầu phía trên của chúng ta là lấy các hình ảnh và liên kết nên chúng ta sẽ lọc chúng.
Theo như yêu cầu trên chúng ta có các hàm sau: hàm getContent() và get(). Hàm getContent($url) có nhiệm vụ lấy dữ liệu từ URL được truyền vào còn hàm get($type) sẽ tùy theo $type mà quyết định sẽ lấy hình ảnh hay liên kết.
Lấy dữ liệu thô
Code hàm getContent và _construct
Lọc dữ liệu
Các hàm còn lại của đối tượng Crawler ở trên

Code hoàn chỉnh
Đây là em nó sau cùng

CODE


class Crawler {

  protected $markup = '';

  public function __construct($uri) {
    $this->markup = $this->getMarkup($uri);
  }

  public function getMarkup($uri) {
    return file_get_contents($uri);  
  }

  public function get($type) {
    $method = "_get_{$type}";
    if (method_exists($this, $method)){
      return call_user_method($method, $this);
    }
  }

  protected function _get_images() {
    if (!empty($this->markup)){
      preg_match_all('/<img([^>]+)/>/i', $this->markup, $images);      
      return !empty($images[1]) ? $images[1] : FALSE;
    }
  }

  protected function _get_links() {
    if (!empty($this->markup)){
      preg_match_all('/<a([^>]+)>(.*?)</a>/i', $this->markup, $links);
      return !empty($links[1]) ? $links[1] : FALSE;
    }
  }
}



Sử dụng con Crawler này như thế nào
Cần lưu ý là con crawler như ở trên chỉ có thể duyệt được 1 trang duy nhất theo URL được truyền vào. Để duyệt được nhiều trang bạn chỉ việc duyệt 1 trang đầu tiên và lặp lại mảng kết quả (URL) để tiếp tục duyệt các URL được tìm thấy.

CODE

$crawl = new Crawler('http://thienduongweb.com');
$images = $crawl->get('images');
$links = $crawl->get('links');


Biến $images và $links nhận được là dạng mảng. Phần mở rộng cho con crawler này để thực hiện các chức năng khác mời các bạn bổ sung cũng như hoàn thiện thêm


Blog tổng hợp những kinh nghiệm được học, áp dụng và chia sẻ


Loading...