[Data crawling tutorial] Bài 0: Giới thiệu

I Introduction

Crawling, scraping, spidering là những phương pháp thu thập data từ nguồn dữ liệu (công khai, bí mật) của bạn/ doanh nghiệp của bạn/ bên thứ 3 phục vục cho mục đích nào đó.

Crawling, scraping, spidering có một chút khác biệt về ý nghĩa. Crawling thường có nghĩa là bạn gom hết data từ page, scraping thì bạn chỉ trích xuất một số trường cần thiết, spidering là hành động đi gián điệp rồi gom thông tin cần về. Với quan điểm cá nhân, không cần quá khắt khe gọi cho đúng bản chất hành động của bạn, gọi crawling hết là được hay nói đơn giản theo tiếng Việt là “cào data”.

Crawling data thường được sử dụng cho:

  • Social listening.
  • Feature collecting for AI model.
  • Automation Task base on web data.
  • Monitor metrics.
  • Repost a page.

Crawl data của một website thường là một hành động không được ủng hộ vì bạn đã sử dụng tài nguyên của một cá nhân/tổ chức để phục vụ cho project của bạn. Quá trình crawling nếu sử dụng quá nhiều tài nguyên của một website sẽ dẫn đến nghẽn website, gây ảnh hưởng đến hoạt động bình thường của của cá nhân/tổ chức cũng như ảnh hưởng đến khả năng tiếp cận tài nguyên của những người dùng khác. Vì thế nếu số request của bạn nhỏ và không ảnh hưởng đến website, hãy vô tư tiếp tục công việc của mình, ngược lại, trước khi crawl data số lượng lớn, bạn cần phải được sự đồng ý từ đơn vị chủ quản của nguồn tài nguyên, ở đây là chủ website. Bạn có thể email cho chủ website với nội dung theo đề xuất sau:


[Request for data crawling approval]

Dear {website owner}

My name is {your name}, I have a project that {your project purpose}. I want to get {data that you want to get} {frequency}, so I need to make {number of request} per {second/hour/day} to your website at abc.xyz. I promise that my Crawling BOT actions will not affect your website operations and I won’t crawl anything from your website without your approval. Hope you allow me to crawling data from your website. I will shutdown my BOT and try to solve the problem with you if my BOT lets your website go slow.

I look forward to receiving a favorable reply to my request.

Thanks,

{your name}


Thư của bạn có thể được xem xét và đồng ý, không được rep hoặc nhận được mail không đồng ý. trong trường hợp không được reply /đồng ý bạn có 2 sự lựa chọn hoặc là dừng lại và tìm website khác cho phép bạn crawl hoặc tiếp tục hành động crawl trong bí mật và project của bạn cũng không được kiếm lợi nhuận. Lưu ý hành động tiếp tục crawl mà không được sự cho phép, khi bị tổ chức/ cá nhân sở hữu website phát hiện bạn có thể bị buộc tội về hành vi cản trở hoạt động bình thường của tổ chức/ cá nhân được pháp luật bảo vệ.

Dù mục đích của bạn là gì, ở đây chúng ta không nói về tính chính nghĩa của mục đích, chúng ta chỉ tập trung vào cách khai thác các nguồn dữ liệu để phục vụ mục đích.

Chuỗi bài viết về crawling data sẽ hướng dẫn crawl data theo nhiều cách khác nhau, cách vượt bot check và một số kinh nghiệm bản thân tác giả.

II Các công cụ cần thiết

Để crawling data chúng ta cần nắm một vài điều kiện cơ bản như sau:

  • Một ngôn ngữ lập trình phổ biển: Python, Java, C#… (Trong chuỗi bài viết về crawling tác giả sẽ sử dụng Python là chính) cú pháp có thể khác nhau nhưng cú pháp thực hiện là tương đối giống nhau giữa các ngôn ngữ lập trình, một ngôn ngữ phổ biến thì khả năng có các công cụ hỗ trợ cho quá trình crawling của bạn sẽ cao hơn.
  • VPS server/ personal computer: khuyến khích sử dụng VPS vì crawling là một quá trình tốn nhiều thời gian, sử dụng máy tính cá nhân sẽ ảnh hưởng đến việc thực hiện các công việc khác của bạn.

Các công cụ cần thiết cho việc crawling:

  • Postman: Postman dùng để test request tới website và xem các kết quả trả về. Với việc crawling đơn giản đối với những website không có chặn bot, Postman không thật sự cần thiết, nhưng đối với các website lớn như facebook, amazon hầu hết điều có cơ chế chống bot, Postman sẽ là một công cụ đắc lực để chúng ta có thể giả lập “human-like behavior”.
  • Http requests lib: requests đối với python, HttpClient với java, RestSharp với C#…
  • Selenium, PhantomJS: selenium là một trình điều khiển web browser còn PhantomJS là một trình duyệt không hiển thị UI. Trong trường hợp website có cơ chế chống bot, sử dụng các lib http request để crawl data là không thể, Selenium, PhantomJS chính là điểm nhấn giúp ta bypass bot check.
  • 2Captcha: Đây là một đơn vị cung cấp phương pháp vượt captcha tốt được nhiều anh hùng tin dùng. Đối với những website sử dụng captcha để phát hiện bot, 2Captcha là phương pháp hữu hiệu nhất ngoài việc tìm bug để bypass, mà bug thì không phải lúc nào cũng có, còn 2captcha thì luôn sẵn sàng miễn là bạn có tiền. Chi phí cho việc giải 1 captcha là không quá cao và giá trị mà nó mang lại thì vượt xa chi phí đó, nên: không cần phải đắn đo suy nghĩ!

Ngoài các công cụ kể trên thì sẽ có một số thứ có thể cần thiết cho quá trình crawling của bạn như:

  • Một công cụ thay đổi IP: Proxy, VPN
  • Trình duyệt web

III Quy trình crawling một trang web

Để crawling một trang web chúng ta cần có một quy trình, bên dưới đây là quy trình crawling theo ý tác giả:

  1. Chọn thứ mình muốn crawl về, website cần crawl
  2. Khảo sát bảo mật của website:
    • trang web cần craw có đơn giản không? có ⇒ dùng http request lib kéo thẳng file html về
    • có yêu cầu đăng nhập không? có ⇒ selenium/phantomjs.
    • Có cơ chế chống bot? có ⇒ selenium.
    • có yêu cầu nhập captcha? có ⇒ selenium + 2captcha
    • có chặn ip nếu vượt sốt request/phút? có ⇒ implement đổi IP sau số lần request nhất định
  3. Dựa trên khảo sát chọn phương án, chiến lược crawl thích hợp
  4. Implement crawling bot, test và lập lịch vận hành.

IV Nội dung sẽ giới thiệu

Nội dung về series crawling data with python sẽ gồm các phần sau:

Bài 1: crawl một vài metric đơn giản với thư viện requests trên Python

  • Cấu trúc 1 page html
  • Xpath, CSS selector là gì
  • Regular Expression
  • Postman
  • Thư viện request trên python
  • craw metrics đơn giản từ các bài báo.

Bài 2: Sử dụng selenium và cách bypass đăng nhập vào website

  • giới thiệu về selenium
  • Sử dụng selenium điều khiển trình duyệt web thực hiệp thao tác theo script
  • load cookie
  • load web-browser profile để qua mặt trình chặn bot

Bài 3: Đổi IP để qua mặt trình đếm request

  • Các cách đổi IP
  • Đổi IP cùng với Proxy – SSH Tunneling
  • Đổi IP cùng với VPN

Bài 4: Dùng 2captcha giải google captcha khi bị yêu cầu xác thực

  • Giải tất tần tật các thể loại captcha bằng tiền

Bài 5: Dựng server lưu metrics và visualize

  • Dựng database lưu metrics với MongoDB
  • Visualize metrics ngon bổ rẻ cùng với Metabase

Bài 6 Kết.

Các bài viết sẽ được cập nhật tại post này khi được đăng.

Hi vọng với chuỗi bài viết sắp tới sẽ hỗ trợ mọi người trong project mà mọi người dự định thực hiện. Nếu có bất kỳ thắc mắc nào hãy feel free email me at lploc94@gmail.com nhé.

Leave a Comment