crawler-data-5-dieu-luu-y-truoc-khi-bat-dau

Crawler Data – 5 điều lưu ý trước khi bắt đầu

Có nhiều lý do để các ông bắt tay vào crawler data (web, app, blog, …). Thông tin có thể cần thiết cho một ai đó, hoặc để làm gì đó. Tuy nhiên, trước khi các ông bắt tay vào cào “rầm rầm” dữ liệu. Hãy đọc bài viết này của tôi. Tôi thề là nó có giá trị.

crawler-data-scraping-data
Crawler data chưa bao giờ là dễ dàng đối với người mới bắt đầu

Dưới đây là những sai lầm tôi đã gặp phải trong quá trình crawler data, viết ra đây với mong muốn là các ông tránh được thì cố tránh. Kẻo lỡ nhận đâu đó của người ta mà không crawler data được người ta lại đập cho.

Ok, sẵn sàng chưa?. Bắt đầu ngay đây.

1 Đánh giá độ khó, tính khả thi

Cái này là quan trọng nhất. Trước khi muốn crawler cái gì, các ông nên nhìn sơ qua xem nó có khả thi hay không?. Tôi trước đây cũng bị vài cú, do coi không kĩ mà đã nhận bừa.

Cuối cùng cái website khách hàng đưa nó anti crawler VCL ra. Nói chung là ì à ì ạch, bộ tools viết ra để crawler data hoạt động không ổn định.

Một số cách anti crawler data bao gồm:

  • IP Block – Phát hiện truy cập bất thường, hoặc quá nhiều (Block IP)
  • Captcha – Easy way (Thường dùng Google Captcha)
  • Check UA – User Agent (Phải thay đổi liên tục)
crawler-data-anti-google
Gặp reCaptcha của Google – Easy for Human, Hard for Bot. Như cái slogan
crawler-data-user-agent
Check User Agent gắt – cũng thốn

Nói chung mấy trang nó đã muốn anti crawler thì chứng tỏ nội dung trên trang có giá trị, hoặc là nó không muốn người ta lấy ra hết để đem đi thông kê hay gì đó. Anh em nên cẩn thận phân tích website trước khi bắt đầu crawler

2. Bóc tách dữ liệu trong quá trình crawler data

Sau khi đã xem xét tính khả thi của nội dung muốn crawler. Việc tiếp theo cần xem xét là bóc tách dữ liệu. Việc bóc tách dữ liệu đòi hỏi phải nắm chắc về DOM (Document Object Model) và cách Browser Render Website (tham khảo bài viết này ở Kieblog)

Tất nhiên, đã nói tới Crawler Data không thể không biết tới Xpath, CSS Selector. Phân tích Xpath trên DOM để tìm ra Content mình muốn lấy

Nếu trang web muốn crawler data có nhiều page, redirect hay rerender nhiều thì càng phải chú ý. Vì thường nó có thể thay đổi.

Trường hợp oái ăm như dùng ReactJs hay dùng VueJs, các khóa Id và Class được generator sau mỗi một lần render, lúc này cực kì khó để mò được tới node muốn lấy thông tin. Nên cẩn nha

Phần XPath hay Selector có thể lưu ở DB, trường hợp muốn thay đổi, chỉ thay đôi ở DB, không phải đụng tới source

3. Thiết kế database trước khi

Sau khi đã bóc tách dữ liệu, cần lựa chọn nơi lưu trữ. Nếu khách hàng yêu cầu Excel -> dễ thở hơn xíu. Xuất file theo template hoặc theo yêu cầu khách hàng. Xong

Nhưng nếu khách hàng muốn lưu trữ crawler data ở Database?. Vấn đề lớn hơn nhiều, lúc này cần phải có tuyệt chiêu thiết kế Database.

Bạn nào có hứng thú về các Anti Pattern đã biết khi thiết kế Database có thể tham khảo series bài viết tại đây (ở Kieblog).

Phần XPath và CSS Selector là thứ hay thay đổi, có thể thiết kế để lưu nội dung này trong database -> có thể cập nhật khi cần thiết. Tránh viết hardcode trong source, khó sửa. Như tôi deploy con Scrapy lên, giờ chỉ sửa DB, chứ pull source về sửa XPath rồi push lên lại chắc chớt.

Content từ Xpath rất dễ thay đổi ở Website ta muốn crawler. Một ngày đẹp trời có thể thêm thẻ Div. Nên chú ý cách thức lưu trữ hợp lý
Nguồn / Source: Guru99

4. Nghĩ về các pattern

Trước lúc bắt dầu crawler data từ website, cần suy nghĩ xem viết crawler như thế nào?. Viết một con bot crawler có linh hoạt để thay đổi không?.

Nếu cào website thương mại điện tử thì hàng giảm giá với hàng bán chạy có dùng chung được không?. Chỉ khác mỗi cái title thì có thể gộp chung lại.

Trường hợp crawler là website tin tức, thì khi khác chuyên mục có thể sử dụng chung một con crawler được không?

Các pattern nên đọc trước khi viết bot crawler là:

5. Dữ liệu có thể xử lý được

Tất nhiên, ai bỏ tiền ra để crawler data cũng muốn lấy được dữ liệu mà mình mong muốn.

Nhưng nếu đối tượng dữ liệu muốn crawl là dữ liệu realtime thì sao?. Lúc này cần đặc biệt chú ý thứ tự các node xuất hiện trên cây DOM. Dữ liệu crawl được nên tính toán và order ngay trước khi xuất ra đâu đó.

Ui, viết hoài cũng hết. Chúc anh em đọc được bài vết và crawler data thành công nhé. Nếu có gì khó khăn thì contact mình qua email: [email protected]

NHỚ LIKE FANPAGE NHA! – MERCI

6. Tham khảo

Có gì thắc mắc cứ comment đây nha! - Please feel free to comment here!
Chia sẻ bài viết


Trả lời

Email của bạn sẽ không được hiển thị công khai.