Làm thế nào để app của mình kết nối được đến trang web abc.com và lấy dữ liệu về, trong khi không biết API của nó?

Mình đang định làm 1 app android liên quan đến việc kết nối đến sever bên trên. VD : Có 1 trang web abc.com , trang web này mình k biết api. Làm thế nào để app của mình kết nối được đến đó và lấy dữ liệu về, trong khi không biết api của nó?
Làm thế nào để biết được trang abc.com nó trả về kiểu json hay xml và nó bao gồm những thành phần gì?
Mình cảm ơn!

2 Likes

đó là web service.
tùy vào dự án có những API nào thì tùy thuộc,
ví dụ: abc.com của bạn thì bạn viết hoặc ai đó viết cùng hợp tác làm app với bạn thì mới biết được nó cần gì và trả về gì. đơn giản như API login đi :
abc.com/login&user = ?&pass= ?
giá trị trả về
> json : {

>                                 "login" :"true"
>                                  "id" : "1"
>                                  "avatar ": "http://link anh gi do "
>                               }

nhận giá trị trả về là “true” tức là login thành công.

cái này tùy thuộc vào ngữ cảnh mà bạn làm.

tool check nhanh cho mình ở trên web google : postman rest client shortcut.

2 Likes

Đó. Vấn đề là mình k biết api trả về. Làm thế nào để xem. Một trang web giả sử youtube, dantri, tinhte,daynhauhoc trả về cái gì và nội dung bao gồm cai gì ạ?

2 Likes

mấy cái web đó bạn chỉ lấy RSS của họ chứ đâu phải là web service.
ví dụ :
http://vnexpress.net/rss
http://dantri.com.vn/rss.htm

2 Likes

Ủa. Vậy mình muốn lấy các text trong 1 bài báo thì phải làm sao. Mình tưởng nó tra về 1 ob json. Trong đó có thuộc tính bao gồm nội dung bài báo

1 Like

bạn nghiên cứu Jsoup nhé :grin:
app này mình làm bằng jsoup này :grin:
Còn những web nào hỗ trợ hoặc web của bạn thì có thể dùng json được, ví dụ dạy nhau học này :sunglasses: http://daynhauhoc.com/latest.json

5 Likes

nó trả về XML

http://www.tutorialspoint.com/android/android_xml_parsers.htm

2 Likes

Bạn ấn F12 xong bật tab network lên để theo dõi các gói tin được trao đổi qua lại và xem xem dữ liệu dạng gì để tìm cách bắt :smile: ngon thì được json xml mà đen thì phải dùng jsoup để tách dữ liệu từ html như của anh @TTmagic gợi ý :smile:

6 Likes

Có 1 kỹ thuật là scan nội dung html của trang web đó, sau đó lọc ra các thông tin cần thiết, đó là cách mà Google, Baomoi, cách trang tin tổng hợp dùng.

5 Likes

Có 1 số hướng giải quyết như sau:
1- Tìm xem trang đó có app mobile không? Sau đó cài lên và dùng phần mềm nghe lén (sniff) để bắt các gói tin. May mắn nếu các gói tin này không mã hóa (dùng http) thì bạn có thể xem request, response của nó mà dùng. Nói chung, cứ lần lần dần dần thì sẽ ra. Đây là cách mà mình cũng đã làm thử với một vài trang web xem phim. (tuy nhiên nếu không may họ dùng https, hoặc cài token key cho app thì … hết phim)

  1. Cách nữa có lẽ hay hơn là xin/mua API đó. Ví dụ như mp3.zing.vn, bạn có thể viết mail xin được.

  2. Bóc tách trang web của nó. Cái này có thể làm dưới client (ví dụ bạn dùng jsoup bóc tách và hiển thị luôn trên app). Tuy nhiên, nhược điểm là app tốn băng thông vì phải download cả file html, nặng vì phải thực hiện thao tác bóc tách).

  • Tuy nhiên, cách làm hay hơn là bạn bóc tách phía server (viết crawler) rồi lưu vào CSDL của riêng bạn (dùng ngôn ngữ nào cũng ok). Sau đó viết webservice cho app mobile của bạn, vừa chủ động, vừa nhanh và đỡ tốn băng thông cho app.
8 Likes

Kỹ thuật đó có vẻ là dùng HtmlAgilityPack để lấy nội dung website ra có phải không nhỉ?

1 Like

Bạn đăng ký thử một tài khoản của http://thinkspeak.com
Và nghiên cứu nó thử?
Có API để nhận dữ liệu và có API để lấy dữ liệu ( trả về 1 ob Json)

tên trang web có đúng không bạn. mình không vào được

Vào lại nha: https://thingspeak.com/

trang web này nó để làm gi vậy ạ. Hồi chiều mình cũng có search qua mà không rõ lắm

chào a. a có thể nói rõ cho e cách 3 được k ak. hiện tại e đang sử dụng cách 2 như a nói nhưng thời gian để load lâu quá. mà e thấy cách 3 a nói rất hay nhưng e vẫn chưa hiểu rõ cách chuyển khai

Cách 3 giống cách 2 mà bạn, thay vì dùng jsoup bóc tách dữ liệu trên phone, bạn dùng jsoup bóc tách dữ liệu này trên server. Sau khi bóc tách (parser) xong, bạn lưu nó vào CSDL của mình trên server.

Sau đó bạn viết một webservice (hoặc cài đặt) để nó giao tiếp với phone.

1 Like

bạn phải hiểu cấu trúc API của nó mới làm được. Ví dụ như trang ở dưới: https://khuyenmaibamien.com này chẳng hạng. Họ lấy thông tin sản phẩm từ các trang khác load tự động ấy.

ví dụ thôi. Nhìn bây giờ nó như vậy, bạn không hiểu được. Tốt hơn bạn nên thuê người viết. Không đắt lắm.

Bạn tìm hiểu về crawl data nhe. Bạn có thể crawl về server của bạn. Sau đó app mobile của bạn sẽ kết nối tới server của bạn và lấy dữ liệu xuống. Vd mình có một trang về crawl dataở đây

The conversation is no longer active.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?