10/10/2018, 11:24
hỏi cách bóc tách dữ liệu hiểu quả
Hiện tại mình muốn bóc tách các thông số của cổ phiếu tại vietstock và đưa vào mảng.
Cụ thể là link: http://data.vietstock.vn/bang-gia-truc-tuyen/hsx.aspx
Nhưng mà nó có lắm mã và nhiều thông số quá.
Bạn nào có thể hướng dẫn mình cách làm. Thanks!
Cụ thể là link: http://data.vietstock.vn/bang-gia-truc-tuyen/hsx.aspx
Nhưng mà nó có lắm mã và nhiều thông số quá.
Bạn nào có thể hướng dẫn mình cách làm. Thanks!
Bài liên quan
Nói vậy là bạn hiểu cách lấy thế nào.
file_get_contents("http://data.vietstock.vn/bang-gia-truc-tuyen/hsx.aspx");
nhưng vẫn chưa lấy được từng fied để cho vào màng.
Cách bạn nói dùng JSON mình chưa hiểu lắm, có thể chỉ cho mình cách làm không.
Nếu bạn tìm hiểu sâu một chút sẽ biết, đối với các trang chứng khoáng, client sẽ liên tục update dữ liệu thay đổi trên server mà không cần F5, dữ liệu trao đổi giữa client và server chính là JSON.
Thay vì việc bạn đi bóc tách HTML bạn có thể lấy dễ dàng hơn bằng việc decode JSON mà mình đã nói ở trên.
Mình chỉ gợi ý thế thôi, phần còn lại bạn nghiên cứu thêm, tự nghiên cứu sẽ học được thêm nhiều thứ.
Best regards.
Nhưng trước mắt mình tập trung vào bóc tách qua html thôi.
Vì bảng điện tử này có khoảng 600 cổ phiếu, và nó update ko liên tục. Mình chỉ cần lấy phiên đóng ngày hôm qua, tức là 1 ngày chỉ cần 1 lần. Và lấy về còn phải xử lý nữa.
Nên nếu lấy auto rồi xử lý trực tiếp có lẽ sẽ làm trang tải chậm.
Mình có sử dụng đoạn này để lấy mã cổ phiếu:
$pattern = '/\<td ref="lr" title=\'.*\' id="AAM_CK" style="width: 3.4%;text-align:center; font-weight:bold;font-size:13px;font-family:Courier New; cursor:pointer;" class=\'Pr\' onClick="window.open(\'.*\',\'Vietstock Finance\',\'location=1,status=1,scrollbars=1,width =800,height=600\')">(.*)\<\/td\>/';
rồi preg_match_all nhưng mà ko được.
Bạn có thể test với http://directboard6.vndirect.com.vn/...aspx?locale=vn
Thực ra bạn chưa hiểu cơ chế hoạt động của các trang chứng khoáng, có thể bạn nhìn trên bảng board giao dịch của sàn không có gì thay đổi, nhưng thực chất giữa browser của bạn vẫn đang âm thầm cập nhật dữ liệu từ server về. Nếu có sự thay đổi nó sẽ view cho bạn xem.
Để làm được điều đó thì cứ khoảng (x) giây browser sẽ send một request lên server để update dữ liệu, cơ chế update dữ liệu ở đây sử dụng Ajax để lấy.
Nếu bạn có thể giả cái ajax request kia thì bạn có thể lấy dữ liệu của họ về ở dạng JSON, khi đã có JSON thì việc parse nó rất đơn giản.
Nếu bạn vẫn muốn bóc tách bằng html thì có thể tham khảo thư viện simplehtmldom, bóc tách cái này sẽ tiện hơn.
Best regards
Thay vào đó bạn tìm đường dẫn trong kết quả URL của ASXP sẽ có 1 lệnh POST hay GET có nhiệm vụ lấy về từ server với kết quả là file JSON thay vì ASPX.
Trong file JSON sẽ bao gồm những mảng (array) kết quả về bảng chứng khoán sẽ hiện thị trên URL của ASXP.
Như vậy thay vì bóc tách trên HTML của URL của ASXP , bạn chỉ cần lấy giá trị trong mảng (array) từ file JSON.
và chắc chắn URL của ASXP chạy AJAX. Hoặc là JSON hoặc là XML. cả 2 đều chơi tốt. Và hiệu quả hơn HTML.
Bạn nên tìm hiểu về XML và JSON là ok. cái này không phải là khó chỉ dẫn, mà là không biết bạn có hiểu vấn đề giải quyết với JSON hay XML không mà thôi.
http://directboard6.vndirect.com.vn/...aspx?locale=vn
nó cóa check Status lấy 1 file từ lệnh post:
URL=http://data.vietstock.vn/bang-gia-truc-tuyen/StockHandler.ashx?getVersion=105953&floor=1
Kết quả trả về :