Web Scraping với VBA

Mục lục:

Anonim

Data Scraping là gì?

Thu thập dữ liệu là kỹ thuật giúp trích xuất thông tin mong muốn từ một trang web HTML sang một tệp cục bộ có trong máy cục bộ của bạn. Thông thường, một tệp cục bộ có thể tương ứng với tệp excel, tệp word, hay nói cách khác là bất kỳ ứng dụng văn phòng nào của Microsoft. Nó giúp chuyển thông tin quan trọng từ trang web.

Việc thu thập dữ liệu trở nên đơn giản khi thực hiện một dự án dựa trên nghiên cứu hàng ngày, và một dự án như vậy hoàn toàn phụ thuộc vào internet và trang web. Để minh họa thêm về chủ đề này, chúng ta hãy lấy ví dụ về một nhà giao dịch hàng ngày chạy macro excel để lấy thông tin thị trường từ một trang web tài chính vào một trang tính excel bằng VBA.

Trong hướng dẫn này, bạn sẽ học:

  • Data Scraping là gì?
  • Làm cách nào để chuẩn bị Excel Macro trước khi thực hiện Data Scraping bằng Internet explorer?
  • Làm thế nào để mở Internet Explorer bằng Excel VBA?
  • Làm thế nào để mở trang web trong Internet explorer bằng VBA?
  • Làm thế nào để thu thập thông tin từ trang web bằng VBA?

Làm cách nào để chuẩn bị Excel Macro trước khi thực hiện Data Scraping bằng Internet explorer?

Có một số điều kiện tiên quyết nhất định phải được thực hiện trên tệp macro excel trước khi bắt đầu quá trình thu thập dữ liệu trong excel.

Các điều kiện tiên quyết này như sau: -

Bước 1) Mở Macro dựa trên Excel và truy cập tùy chọn dành cho nhà phát triển của excel.

Bước 2) Chọn tùy chọn Visual Basic trong dải băng Nhà phát triển.

Bước 3) Chèn một mô-đun mới.

Bước 4) Khởi tạo một chương trình con mới

Sub test()End sub

Mô-đun sẽ dẫn đến kết quả như sau: -

Bước 5) Truy cập tùy chọn tham chiếu trong tab công cụ và tham chiếu Thư viện đối tượng HTML của Microsoft và điều khiển Internet của Microsoft.

Các tệp sau đây sẽ được tham chiếu đến mô-đun vì nó giúp mở trình khám phá internet và tạo điều kiện phát triển tập lệnh macro.

Bây giờ tệp Excel đã sẵn sàng để tương tác với trình khám phá internet. Bước tiếp theo sẽ là kết hợp các tập lệnh macro để tạo điều kiện cho việc thu thập dữ liệu trong HTML.

Làm thế nào để mở Internet Explorer bằng Excel VBA?

Bước 1) Khởi tạo biến trong các chương trình con như hiển thị bên dưới

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocument

Bước 2) Để mở trình khám phá internet bằng VBA, hãy viết tức là hiển thị = true và nhấn F5.

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentIe.visible=true

Mô-đun sẽ trông như sau: -

Làm thế nào để mở trang web trong Internet explorer bằng VBA?

Đây là các bước để mở trang web trong trình khám phá Internet bằng VBA

Bước 1) Khi bạn có thể truy cập trình khám phá internet bằng Excel VBA, bước tiếp theo sẽ kết hợp việc truy cập trang web bằng VBA. Điều này được hỗ trợ bởi Thuộc tính điều hướng, trong đó URL phải chuyển dưới dạng dấu ngoặc kép trong thuộc tính. Làm theo các bước sau như được hiển thị.

Sub test()Dim, ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate"http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETE

Bước 2) - Nhấn F5 để thực thi macro. Trang web sau sẽ được mở như được hiển thị

Bây giờ, macro excel đã sẵn sàng để thực hiện các chức năng cạo. Bước tiếp theo sẽ hiển thị cách thông tin có thể được trích xuất từ ​​trình khám phá internet bằng VBA.

Làm thế nào để thu thập thông tin từ trang web bằng VBA?

Giả sử nhà giao dịch ban ngày muốn truy cập dữ liệu từ trang web hàng ngày. Mỗi lần nhà giao dịch trong ngày nhấn nút, nó sẽ tự động kéo dữ liệu thị trường vào excel.

Từ trang web trên, cần phải kiểm tra một phần tử và quan sát cách dữ liệu được cấu trúc.

Bước 1) Truy cập mã nguồn HTML bên dưới bằng cách nhấn Control + Shift + I

Mã nguồn sẽ như sau: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.document

Như có thể thấy rằng dữ liệu được cấu trúc như một Bảng HTML duy nhất. Do đó, để kéo toàn bộ dữ liệu từ bảng html, nó sẽ yêu cầu thiết kế macro thu thập dữ liệu dưới dạng tập hợp.

Bộ sưu tập sau đó sẽ được dán vào excel. Để đạt được kết quả mong muốn, hãy thực hiện các bước được đề cập dưới đây: -

Bước 2) Khởi tạo tài liệu Html trong chương trình con

Mô-đun VBA sẽ trông như sau: -

Bước 3) Khởi tạo phần tử bộ sưu tập có trong tài liệu HTML

Mô-đun VBA sẽ trông như sau: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

Bước 4) Khởi tạo các ô trang tính excel với sự trợ giúp của vòng lặp lồng nhau như hình minh họa

Mô-đun VBA sẽ trông như sau: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

Có thể khởi tạo excel bằng cách sử dụng thuộc tính dải ô của trang tính excel hoặc thuộc tính thông qua các ô của trang tính excel. Để giảm độ phức tạp của tập lệnh VBA, dữ liệu thu thập được khởi tạo thành thuộc tính ô excel của trang tính 1 có trong sổ làm việc.

Khi tập lệnh macro đã sẵn sàng, hãy chuyển và gán chương trình con vào nút excel và thoát khỏi mô-đun của VBA. Gắn nhãn nút là làm mới hoặc bất kỳ tên phù hợp nào có thể được khởi tạo cho nó. Đối với ví dụ này, nút được khởi tạo dưới dạng làm mới.

Bước 5) Nhấn nút làm mới để nhận đầu ra được đề cập bên dưới

Bước 6) So sánh kết quả trong excel với kết quả của Internet explorer

Tóm lược:

  • Việc thu thập dữ liệu cho phép người dùng chỉ lấy ra những thông tin mà người dùng muốn.
  • Scraping có thể được thực hiện bằng cách sử dụng Internet explorer.
  • Quá trình cạo chậm hơn trong trường hợp trình khám phá internet; tuy nhiên, nó mang lại kết quả mong muốn cho người dùng.
  • Việc cạo phải được thực hiện với sự cẩn thận và thận trọng tuyệt đối vì nó có thể gây hại và làm hỏng hệ thống đang được sử dụng để cạo.
CompanyGroupPre Close (Rs)Current Price (Rs)% Change