Parsing HTML sử dụng volley và jsoup

Hôm nay là ngày thứ 7, cuối tuần, tôi mới có thời gian thoải mái đắm chìm trong một vài bài nhạc Trịnh du dương,ngọt ngào  cùng nhấm nháp thứ chất lỏng đen sì , chát đắng  sặc mùi hóa chất mà người ta vẫn hay kháo nhau bằng cái tên rất mĩ miều “cafe” .Chết lảm nhảm rồi!!!

Đây là một bài chia sẻ. Chuẩn đấy! Mặc dù nó được tôi viết (chính xác là đánh máy), nhưng nó chỉ là một bài chia sẻ . Chắc chắn không phải là một giáo án hay đại loại thế, đừng nhầm! Giáo án thuộc một phạm trù gì đó dành cho nhà giáo đáng kính , hay các expert cao quý .Còn tôi, đơn thuần là một anh chàng đang trong tuổi ăn , tuổi học loay hoay tập code kể lại mấy hoạt động  testing với cái gọi là parsing HTML. Thế nên, xin nhắc lại lần nữa: Đây, là một bài chia sẻ :)) .Ấy lại lảm nhảm rồi

Nhưng bắt đầu từ đâu đây? Html, jsoup…

Thực ra thì cái nào cũng quan trọng với bài này, khi bạn click vào link này thì chắc là bạn có lướt qua một trong những khái niệm trên rồi nhỉ .Nếu không thì các bạn vào từng cái để tìm hiểu đã nhé

Thôi , có vẻ hơi lan man . Chúng ta vào phần chính, à mà quên. nhược điểm của việc bóc tách theo dạng này là rất tốn băng thông nhé vì phải download cả file html, và app rất dễ tèo (app phụ thuộc hoàn toàn vào web theo một cách hoàn toàn bị động)

Thôi zô nào

Cấu trúc của project :

1   Interfaces

2  IHTMLParser

3  IAsyncCallback

img3

Tiếp theo là thư viện sử dụng , các bạn nhớ add đầy đủ nhé

img1

Chúng ta sẽ xử lý Networking thông qua thư viện volley.Nói về volley thì các bạn cũng biết ưu điểm của nó là gì rồi,Các bạn vào đây tìm hiểu thêm

Màn khởi động thế là ổn rồi :).Chúng ta đến với class đầu tiên

BaseApplication

ở đây tôi sử dụng Singleton Pattern mục đích là đảm bảo tại mỗi thời điểm nó được gọi thì chỉ có mỗi nó được tạo ra

Tiếp theo là 2 Interface IHTMLParserIAsyncCallback 

Chúng ta đến với class BaseHttpRequest

ở class này tôi xử lí các response.Các bạn chú ý đoạn xử lý dữ liệu này với AsyncTask nhé

toàn bộ code class BaseHttpRequest

Ok, Tiếp theo là class HTMLParseAsyncTask 

Xử lý đa luồng , tôi dùng AsyncTask ,gọn gàng và sạch sẽ :))

Nó sẽ thực hiện parsing dữ liệu thông qua param truyền vào

Toàn bộ class HTMLParseAsyncTask 

Với class  SmartjobParser

ở class này chúng ta thao tác trực tiếp với Jsoup .Các bạn chú ý hàm này

Nó sẽ trả về một chuỗi có tag name là “tittle”,ngoài ra các bạn có thể thay đổi các hàm khác để test

Tiếp theo thì tôi đưa text vừa get về được vào array và add url vào cho phần tử đó

 

Toàn bộ class SmartjobParser 

Cuối cùng là MainActivity

ở đây tôi sử dụng listview để show dữ liệu .Các bạn chưa rõ về listview ,adapter có thể vào đây ,một bài viết khá đầy đủ của một dev nữ rất xinh gái :)) để tham khảo nhé

Tôi sử dụng url để parsing “http://bigidol.vn/su-kien/57f74bd1a56da1e02756a9f2.html”

 

 

Kết quả hoàn thành :

img4

 

Toàn bộ source code, các bạn có thể download ở đây

Phần body chủ yếu code hơi ít chữ  , các bạn thông cảm nhé.Bài tiếp theo chúng ta cùng thảo luận về Fragment và Activity. Sử dụng sao cho hợp lý :))

Cảm ơn các bạn quan tâm ^^


android,
HTML,
Jsoup,
thư viện volley,