VBA Web Scraping | Làm thế nào để Scrap trang web bằng Excel VBA?
VBA Web Scraping trong Excel
VBA Web Scraping là một kỹ thuật truy cập các trang web và tải dữ liệu từ trang web đó xuống các tệp máy tính của chúng tôi. Có thể tìm kiếm web bằng cách truy cập các ứng dụng bên ngoài như Internet Explorer. Chúng ta có thể làm điều đó theo hai cách tức là Ràng buộc sớm & Ràng buộc muộn.
Web Scraping với VBA có nghĩa là khi chúng tôi sử dụng VBA để tìm nạp dữ liệu từ các nguồn khác trên web, điều này có thể yêu cầu đăng nhập cho các nguồn dữ liệu, nhưng trước tiên, để làm như vậy, chúng tôi cần bật các tham chiếu từ phần công cụ trong trình soạn thảo VBA cho thư viện HTML của Microsoft để truy cập web từ VBA.
Không nhiều người trong chúng ta biết rằng từ excel chúng ta có thể truy cập các trang web và lấy dữ liệu từ các trang web đó. Đúng, bạn nghe đúng đấy. chúng tôi có thể tìm kiếm thông qua các trang web, truy cập các ứng dụng duyệt web và nhiều hơn nữa. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách viết mã VBA trong excel cho web một cách chi tiết.
Thông thường, chúng tôi mở các trang web, sao chép dữ liệu và dán nó vào các tệp của chúng tôi như excel, word hoặc một số tệp khác. Nhưng trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách truy cập trang web từ excel và thực hiện nhiều thao tác khác.
Làm thế nào để thu thập dữ liệu trang web bằng VBA?
Bạn có thể tải xuống Mẫu Excel Web Scraping VBA này tại đây - VBA Web Scraping Excel TemplateKhi chúng ta muốn truy cập bất kỳ ứng dụng nào khác từ excel, chúng ta có thể thực hiện việc này theo các cách như “Ràng buộc sớm” & “Ràng buộc muộn”. Ở giai đoạn mới bắt đầu, việc sử dụng kỹ thuật “Early Binding” luôn an toàn.
Để truy cập trang web, chúng tôi cần các ứng dụng duyệt web, ví dụ: “ Internet Explorer ”. Vì nó là một đối tượng bên ngoài nên trước tiên chúng ta cần đặt tham chiếu.
Thực hiện theo các bước dưới đây để tìm mẩu tin lưu niệm trên web.
Bước 1: Xác định biến VBA và gán kiểu dữ liệu là “ Internet Explorer ”.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As internet End Sub
Như bạn có thể thấy ở trên khi chúng tôi cố gắng đặt tham chiếu cho Internet Explorer, chúng tôi không thấy “Internet Explorer”, điều này là do “Internet Explorer” là một đối tượng bên ngoài nên chúng tôi cần đặt tham chiếu.
Bước 2: Để thiết lập tham chiếu, hãy vào “ Công cụ ” và chọn “ Tham chiếu ”.
Trong cửa sổ bên dưới, cuộn xuống và chọn “ Microsoft Internet Controls ”.
Bước 3: Đánh dấu vào ô “Microsoft Internet Controls” và nhấp vào Ok. Bây giờ chúng ta sẽ thấy tên đối tượng này trong danh sách IntelliSense.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As inter End Sub
Bước 4: Chọn “InternetExplorer”.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer End Sub
Bước 5: Tiếp theo, chúng ta cần thiết lập tham chiếu để kích hoạt Internet Explorer. Vì đây là một biến đối tượng nên chúng ta cần sử dụng từ khóa " Set " để đặt các tham chiếu.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer End Sub
Bước 6: Bây giờ sử dụng biến “ Internet_Explorer ”, chúng ta có thể sử dụng các thuộc tính và phương thức của internet explorer.
Nhập tên biến và đặt một dấu chấm để xem danh sách IntelliSense.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = InternetExplorer Internet_Explorer mới. Kết thúc Sub
Bước 7: Bây giờ để xem ứng dụng Internet explorer, chúng ta cần chọn thuộc tính “ Hiển thị ” và đặt trạng thái là “ Đúng ”.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer Internet_Explorer.Vbroken = True End Sub
Bây giờ hãy chạy mã và bạn sẽ thấy một Internet Explorer mở trên máy tính của bạn.
Bước 8: Vì không có địa chỉ web nào được đề cập nên chúng ta chỉ có thể thấy một trang trống. Để cung cấp địa chỉ web cho trình khám phá internet, chúng ta cần đến phương pháp " Điều hướng ".
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer Internet_Explorer.Vosystem = True Internet_Explorer.Navigate (End Sub
Bước 9: Như bạn có thể thấy ở trên, phương pháp “Điều hướng” hỏi URL nào sẽ được điều hướng trong trình khám phá internet. Bây giờ tôi cần mở trang web “ Wallstreetnmojo ” và tôi có thể cung cấp địa chỉ URL như sau. “//Www.wallstreetmojo.com/”
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer Internet_Explorer.Vosystem = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub
Bây giờ chạy mã, chúng ta sẽ thấy trang địa chỉ web được đề cập trong Internet explorer.
Ở đây chúng tôi có một vấn đề là khi trang web được mở, mã của chúng tôi cần phải đợi cho đến khi trang web đó được mở hoàn toàn.
Bước 10: Chúng tôi cần sử dụng vòng lặp “Do While” trong VBA để thực sự đợi mã của chúng tôi tiếp tục cho đến khi trang được đề cập được tải đầy đủ.
Vì vậy, hãy thêm vào bên dưới vòng lặp “Do While” để buộc macro đợi cho đến khi trang web được đề cập chuyển sang chế độ “ Ready State Complete ”.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer Internet_Explorer.Vosystem = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop End
Bước 11: Bây giờ chúng ta hãy cố gắng lấy thông tin về trang web trong một dòng duy nhất. Để có được thông tin về thông tin địa chỉ web được đề cập, chúng tôi cần sử dụng thuộc tính " Tên vị trí ".
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer Internet_Explorer.Vbroken = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorerr.ReadyState READYSTATE_COMPLETr.Tốt kết thúc Internet: Loop
Chạy mã và trong hộp thông báo, chúng tôi sẽ nhận được thông tin về trang web.
Bước 12: Bây giờ ở dưới cùng, chúng ta cũng có thể in địa chỉ trang web.
Mã:
Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Đặt Internet_Explorer = New InternetExplorer Internet_Explorer.Vnough = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMPLine & vNewpame Internet vNewpLETE: Loop .LocationURL End Sub
Bây giờ điều này sẽ cho biết về mô tả trang web và cũng hiển thị địa chỉ trang web.
Những điều cần nhớ ở đây
- Có thể tìm kiếm web bằng cách truy cập các ứng dụng bên ngoài như Internet Explorer.
- Chúng ta có thể làm điều đó theo hai cách tức là Ràng buộc sớm & Ràng buộc muộn. Với Liên kết sớm, chúng ta có thể xem danh sách IntelliSense nhưng với ràng buộc muộn, chúng ta không thể xem được danh sách IntelliSense.