Xây dựng ứng dụng crawler với .NET

Sau một thời gian tập trung viết những thứ nhảm nhảm thì nay mình đã quay lại và cho ra mắt bài viết có dính dáng tí kĩ thuật nhiều hơn với sự đầu tư lớn về âm nhạc lẫn hình ảnh. Đây là sản phẩm thể hiện sự nỗ lực của tác giả sau thời gian dài quen thuộc trong hình ảnh tấu hài vui nhộn.

ff3b069dfa4f7d67d88899e4ca0667f8

Bài viết này được sáng tác bởi mình, hòa âm Hoàng Touliver (Anh em làm thử bài bay bay cái nhỉ :3)

Bài viết mang giai điệu vui tươi, sôi động cùng phần hình ảnh chất lượng khiến độc giả dễ dàng “lắc lư” khi thưởng thức. Bài viết còn có sự xuất hiện của rất nhiều công cụ hay họ như HtmlAgility, AngleShar..Tất cả đều là công cụ được nhiều lập trình viên yêu mến khi dành được trái tim của họ trong cuộc thi “Crawler và những người bạn”

Bài viết này là dự án code nổi bật của mình trong năm 2016. Tuy định hình mình là một minh tinh màn bạc nhưng mình vẫn không xem code là cuộc dạo chơi mà dành sự chăm chút, đầu tư rất nhiều với mong muốn mang đến cho 500 anh em những sản phẩm code chất lượng nhất

Anh em đọc có thấy giống giới thiệu mấy MV ca nhạc của Ôm thùng ôm tivi không :v

son-tung-mtp-blogtamsuvn-52

Mục đích bài viết hôm nay mình muốn giới thiệu cho mọi người về cách xây dựng các công cụ Crawler (cách thôi nhé còn làm thì anh em tự túc :v).

Crawler là gì

Vậy thế crwaler là gì? Đại loại thì crawler để ám chỉ các công cụ có tính năng chính là tự động phân tích dữ liệu từ 1 nguồn thông tin sau đó bóc tách, chuyển đổi thành các dữ liệu mà bản thân mấy anh dev đẹp trai bị mấy thằng khách hàng xấu xí yêu cầu.

Ví dụ như 1 ứng dụng tự đông lấy thông tin giảm giá ở lazada, lấy thông tin máy bay của Vietjet hay lấy thông tin báo từ nhiều nguồn khác nhau. Hoặc lấy thông tin của video trên Youtube hay lấy thông tin từ Newsfeed trên Facebook.

Các công cụ crawler

Giờ thì giới thiệu 1 số cách để crawle dữ liệu với .NET nào.

  • Ứng cử viên đầu tiên của chúng ta là HtmlAgilityPack. Anh tài số 1, đã độc bá võ lâm từ lâu trong giới parser HTML. Chàng trai của chúng ta đã luyện đến cảnh giới cao nhất võ học của bộ môn XPATH và XSLT thần thánh.
  • Đệ nhị tiếp theo là Fizzler. Thằng này thực ra thì là xây dựng trên base của thằng HtmlAgilityPack. Tuy nhiên em này được cái ngon hơn là dựa trên CSS nên cũng đơn giản hơn mấy cái XPATH loằng ngoằng
  • 2 thằng tiếp đó là CsQuery (được port từ Jquery sang)  và AngleSharp. Mấy cháu này cũng sử dụng CSS để đọc thông tin trong HTML. Thằng AngleSharp thấy bảo đúng chuẩn con nhà người ta luôn, siêu nhanh và hỗ trợ khá nhiều thứ.
  • Thằng cùi nhất là Regex. Thằng này mình đã từng giới thiệu trong bài viết Trở thành chuyên gia Giải pháp cùng với Microsoft Word. Anh em chịu khó mở lại đọc để biết nhé. Thằng này thì nên tránh sử dụng vì thực ra nó không phải là thằng chuyên cho việc đọc HTML

Tun tủng thì đấy mình giới thiệu hết rồi đấy. Còn tùy anh em chọn cái nào để làm thì làm thôi vì mình thích thì mình làm thôi. Tiếp thì mình sẽ lấy ví dụ với thằng Fizzler mà mình đang dùng để cho anh em đọc code nó quen mắt :v

Xây dựng ứng dụng

Ví như có 1 chàng trai nào phải lòng mình và theo dõi blog mình thường xuyên và muốn lấy tin về đọc như

1

Anh em xem thử mã HTML nhỉ. Bật Chrome Web Developer lên xem nào

2

Anh em có thể thấy nếu muốn lấy được danh sách bài viết trong blog của mình thì thấy nó nằm trong cái thẻ div id là primary rồi trong đó là 1 đống article. Mình đưa luôn đoạn code để đọc thông tin blog mình ở trang chủ để anh em ngâm cứu :*

Kết

Mấy hôm nay thì mình đang làm cái crawler lấy giá điện thoại trên mấy cái website như Hoàng Hà, Di động thông minh…Sourcecode mình cũng đã đưa lên github, anh em nào có hứng thú thì cứ thoải mái lấy về không cần xin phép nhé 😦 Code mà có người đọc là mừng rơi nước mắt rồi nên cứ tự nhiên

https://github.com/hoangnl/MobileShopping

the-best-funny-pictures-of-spray-tan-tears

Nguồn tham khảo

http://www.mikesdotnetting.com/article/273/using-the-htmlagilitypack-to-parse-html-in-asp-net

http://polygonexpress.com/crawler-la-gi-lay-tin-tu-dong-la-gi.html

http://arachnode.net/

https://github.com/esbencarlsen/NCrawler

Advertisements

3 thoughts on “Xây dựng ứng dụng crawler với .NET

  1. Pingback: Lại là crawler | Code, code and more code

  2. Pingback: Cùng học YQL | Code, code and more code

  3. Pingback: Tớ đã học python như thế nào | Code, code and more code

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s