Tìm hiểu về Simple HTML Dom (ok)
https://viblo.asia/p/tim-hieu-ve-simple-html-dom-eXaRlwXdGmx
Last updated
https://viblo.asia/p/tim-hieu-ve-simple-html-dom-eXaRlwXdGmx
Last updated
Simple Html Dom là thư viện của Php giúp cho việc chúng ta có thể lấy các thuộc tính của các thẻ HTML trong 1 website. Chúng ta có thể lấy trực tiếp thông tin từ link web hoặc là từ 1 chuỗi, đồng thời ta có thể lấy về, và sửa đổi nội dung. Nghe có vẻ như kiểu dễ dàng lấy thông tin từ 1 trang web nào đó về cho web của mình vậy . Chúng ta sẽ thử dùng bộ thư viện này để lấy thông tin từ trang Viblo nhé. Nào bắt đầu thôi.
Cài đặt có thể có nhiều cách đơn cử là các bạn down file zip tại đây hoặc có thể dùng qua thư viện của composer. Ở đây chúng ta sẽ dùng bằng cách thứ 2.
Để sử dụng được thì ta cần import thư viện cũng như dùng nó. Để dùng thì ta cần khai báo như sau
Để đọc thông tin chuyển sang định dạng single_html_dom thì có 2 cách. 1 là đọc trực tiếp từ link, 2 là lấy từ chuỗi string có định dạng HTML. Cách đọc trực tiếp từ link web
Cách đọc từ chuỗi string
Ở đây ta sẽ dung cách thứ 2, và để lấy chuỗi từ 1 link web ta sử dụng curl Ta sẽ viết 1 hàm để đọc từ 1 link web sau đó chuyển sang single_html_dom
Và kết quả chúng ta có là:
Đấy là ta lấy link, còn lấy tiêu đề thì sao? Ta có thể thay **$link->href **bằng **$link-innertext ** Vậy từ việc lấy từng link ta có thể dễ dàng lấy các bài chi tiết khác rồi phải không? Vậy toàn bộ source chúng ta cần là như sau:
Bài viết này mình giới thiệu qua các bạn về cách convert html string sang dom từ đó có thể dễ dàng lấy thông tin hay các thuộc tính của nó. Tuy nhiên cách này không sử dụng được cho những trang phải đăng nhập hay sử dụng captcha. Chỉ là lấy thông tin các báo mạng thì có lẽ ổn. Bài viết thuộc bản quyền Viblo
Ở đây tại sao chúng ta dùng curl, theo ý kiến cá nhân của người viết thì dùng curl hỗ trợ nhiều cái, như kiểu mình có thể giả lập được là đang đăng nhập dùng bằng trình duyệt nào, truyền session hay cookie các kiểu nên vượt được qua vài web chặn bot
Nào chúng ta bắt tay vào để thử lấy danh sách các bài viết và chi tiết các bài viết nhé. Đầu tiên chúng ta ngắm qua trang web viblo. Vì khi chuyển sang dạng single_html_dom ta có thể dễ dàng chọn đến từng đối tượng bằng cách xác định các thể class giống như dùng trong jquery vậy. Đầu tiên ta ngắm qua web site viblo nào. Vậy để lấy list các link ta phải đi từ class container rồi đến các thẻ a có trong class là card-block. Như ở jquery, nếu đường dẫn càng chi tiết thì càng chính xác. Vậy để lấy các link ta dùng như sau: