Crawling trang web bằng Laravel Dusk Spider

Tram Ho

Giới thiệu

Thu thập dữ liệu (crawl data) là một thuật ngữ không có gì là xa lạ trong ngành marketing, Dịch Vụ Seo. Vì crawl là kỹ thuật mà các robots của các công cụ tìm kiếm phổ biến hiện nay sử dụng như Google, Yahoo, Bing, Yandex, Baidu… Crawler có công việc chính là thu thập dữ liệu từ một trang web bất kì, hoặc chỉ định trước rồi phân tích cú pháp mã nguồn HTML để đọc dữ liệu và bóc tách thông tin dữ liệu theo yêu cầu mà người dùng đặt ra hoặc các dữ liệu mà Search Engine yêu cầu.

Laravel Dusk là gì

Laravel Dusk là một công cụ tự động hóa trình duyệt do Laravel cung cấp. Nó có khả năng truy cập ứng dụng web của bạn hoặc bất kỳ trang web nào khác trong trình duyệt, tương tự như một người dùng thực tế đang điều hành trang web của bạn. Mặc dù mục đích chính của Laravel Dusk là kiểm tra tự động hóa,tuy nhiên nó cũng có thể được sử dụng để quét web.

Cài đặt Laravel Dusk

Việc cài đặt Laravel Dusk khá là đơn giản. Chúng ta có thể sử dụng composer để làm việc đó :

Sau khi package đã được cài, chúng ta có thể dùng lệnh artisan để cài đặt và sinh ra các file mặc định :

Chuẩn bị file migration và bảng cơ sở dữ liệu

Để lưu dữ liệu sau khi crawl, chúng ta tạo 1 bảng Page

File migration của chúng ta sẽ trông như này :

Dusk Spider Test

Bây giờ chúng ta sẽ cùng thử chạy Laravel Dusk nhé

Nội dung file duskSpiderTest sẽ như sau:

  • startUrldomain là website mà chúng ta sẽ crawl
  • setUp method dùng để làm mới lại database mỗi lần chạy test
  • Chúng ta bắt đầu lấy dữ liệu trong hàm urlSpider trong đó sẽ gọi đến hàm getLinks
  • getLinks xử lý các url, lấy tất cả link của web hiện tại và đưa vào database
  • isValidUrl, trimUrl là hàm để kiểm tra link có đúng yêu cầu

Cuối cùng chạy dusk bằng lệnh artisan nhé :

Bài viết được dịch từ Crawling website using Laravel Dusk

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo