Tạo ứng dụng craw dữ liệu bing với Golang, MySQL driver

Tram Ho

Chào mọi người,
Lâu lâu ta lại gặp nhau 1 lần, để tiếp tục series chia sẻ kiến thức về tech, hôm nay mình sẽ tìm hiểu và chia sẻ về 1 ngôn ngữ đang khá hot trong cộng đồng IT đó là Golang.

Như mọi người đã biết Golang là một ngôn ngữ do Google thiết kế và phát triển. Nó được kỳ vọng sẽ giúp ngành công nghiệp phần mềm khai thác nền tảng đa lõi của bộ vi xử lý và hoạt động đa nhiệm tốt hơn. Chính vì vậy nó có tốc độ xử lý cực nhanh và được ưa dùng trong những dự án lớn, đòi hỏi tốc độ xử lý cao trong xu hướng công nghệ hóa 4.0.

Hôm nay mình có làm ví dụ nhỏ về clone data của bing để xem cách Golang hoạt động và độ khó như thế nào, mời mọi người cùng đọc và thực hành nhé.

I. Setup golang

1.1 Tải golang

Mở terminal lên và download golang bằng lệnh sau:

Lệnh này sẽ download file cài đặt golang dưới dạng tar.gz và cài đặt luôn.

1.2. Thêm PATH

Thêm biến PATH cho golang mục đích là để khi ta gõ lệnh go sẽ tự động run được golang
Mở file .bashrc bằng lệnh:

và thêm vào dưới cùng của file lệnh export PATH:

Sau đó chạy lệnh dưới để load lại bashrc

Như vậy biến PATH của mình đã được thêm vào thành công.

1.3 Kiểm tra

Để kiểm tra xem quá trình cài đặt có thành công hay không? và version golang đang sử dụng là bao nhiêu? các bạn chạy lệnh dưới đây:

Sau khi chạy lệnh kiểm tra, bạn sẽ thấy được version của mình

Như vậy đã xong bước đầu tiên là cài đặt golang, tiếp đến mình sẽ khởi tạo project và cài đặt các package

Các bạn có thể truy cập trang chủ của golang để xem chi tiết cách cài đặt: https://golang.org/doc/install

II. Install package

Tạo thư mục project của bạn ở bất cứ đâu và chạy các lệnh dưới để cài đặt package:

Trong phạm vi của project này mình cài đặt 2 package là gocolly/colly, go-sql-driver/mysql

  • colly: bạn có thể dễ dàng bóc tách dữ liệu có cấu trúc từ các trang web, có thể được sử dụng cho nhiều loại ứng dụng, như khai thác dữ liệu, xử lý hoặc lưu trữ dữ liệu. Link github
  • mysql: Trình điều khiển driver mysql để thao tác với DB một cách thuận tiện và dễ dàng. Link github
    2 package này khá hot và được sử dụng nhiều trong golang vì đáp ứng được nhu cầu của người dùng và dễ sử dụng.

Sau khi cài đặt xong, trong thư mục project của bạn sẽ tạo ra 1 file go.mod. File này tương tự như composer của PHP hay package.json của nodejs. Nó dùng để chứa tên các package, version dùng trong project.

Ok, xong phần setting, install package, mình sẽ bắt tay vào việc craw data từ bing.

III. Starting craw

3.1 Mục tiêu

Quét dữ liệu từ url Bing: https://www.bing.com/search?q=test.com và lưu vào DB các thông tin title, link, description

https://www.bing.com/search?q=test.com

3.2 Craw bing data

golang có cơ chế hoạt động sẽ bắt đầu từ hàm main() trong 1 file run chính nên mình sẽ tạo file main.go để làm file run chính cho project và function main().

Trong đoạn code trên mình đã sử dụng package colly để craw data, và đã giải thích trong từng line rồi, nó thực sự không quá khó, nếu các bạn muốn xem chi tiết hơn về việc bóc tách dữ liệu hãy tham khảo doc tại trang chủ colly: http://go-colly.org/

Run lệnh để thực thi:

Và đây là kết quả craw:
Run craw bing data

IV. Khởi tạo DB

Sau khi đã lấy được dữ liệu từ bing, mình sẽ khởi tạo database để thao tác với DB.

Ở đây mình đã sửa lại phần import, thêm 3 package và 1 function để khởi tạo kết nối database.
Như vậy việc khởi tạo kết nối database mình thấy khá giống với nodeJs, chỉ khác 1 chút về xử lý lỗi, cách khai báo biến thôi.

V. Insert database

Tiếp theo mình sẽ insert dự liệu đã craw được vào database.

Thực thi lại file main.go để kiểm tra kết quả:

Craw and insert into DB

Kiểm tra trong database:
Database result

Done!

VI. Kết luận

Như vậy đã hoàn thành quy trình craw và insert vào database rồi đó, với kiến thức hạn hẹp của mình và những gì mình đã học được, đây là bài chia sẻ đầu tay của mình về Golang.

Hy vọng qua bài viết này sẽ giúp các bạn hiểu và biết thêm 1 chút gì đó về craw data và insert dữ liệu với golang như thế nào.

Theo cá nhân mình thấy golang thực thi thực sự rất nhanh, cách viết cũng không quá cầu kỳ, và tạo project cũng very fastttt. Hãy cùng bắt tay vào và code thử xem nhé!

Thanks you!

Tham khảo

  1. https://medium.com/@hugo.bjarred/mysql-and-golang-ea0d620574d2
  2. https://zetcode.com/golang/mysql/
  3. https://astaxie.gitbooks.io/build-web-application-with-golang/content/en/05.2.html
  4. https://golang.org/
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo