Sử dụng Excel VBA và Selenium

Mục lục:

Anonim

Scraping dữ liệu bằng cách sử dụng selen là gì?

Selenium có thể được phân loại là công cụ tự động hóa tạo điều kiện thuận lợi cho việc thu thập thông tin từ các trang web HTML để thực hiện việc thu thập dữ liệu web bằng cách sử dụng google chrome.

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

  • Scraping dữ liệu bằng cách sử dụng selen là gì?
  • Làm thế nào để chuẩn bị Excel Macro trước khi thực hiện Data Scraping bằng Selenium?
  • Cách mở Google Chrome bằng VBA?
  • Làm thế nào để mở trang web trong Google chrome bằng VBA?
  • Làm thế nào để thu thập thông tin từ trang web bằng VBA?

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

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 và đặt tên là test2.

Sub test2 ()Kết thúc phụ

Sau đây sẽ là kết quả trong mô-đun: -

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 loại Selenium. Các thư viện sau đây sẽ được tham chiếu đến mô-đun vì nó giúp mở google chrome 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. Các bước tiếp theo sẽ là kết hợp một tập lệnh macro để tạo điều kiện cho việc thu thập dữ liệu trong HTML.

Cách mở Google Chrome bằng VBA?

Đây là bước mở Google Chrome bằng VBA

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

Sub test2 ()Làm mờ trình điều khiển làm trình điều khiển web mớiLàm mờ rowc, cc, columnC dưới dạng số nguyên

Bước 2) Để mở google chrome bằng selenium và VBA, hãy viết driver.start "chrome" và nhấn F5 .

Sau đây sẽ là mã.

Sub test2 ()Làm mờ trình điều khiển làm trình điều khiển web mớiLàm mờ rowc, cc, columnC dưới dạng số nguyênDriver.start "Chrome"Application.Wait Now + Timevalue ("00:00:20")Kết thúc phụ

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

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

Khi bạn có thể truy cập google chrome bằng VBA, bước tiếp theo sẽ là kết hợp việc truy cập trang web bằng VBA. Điều này được hỗ trợ bởi hàm get 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ị

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

Nhấn F5 để thực thi macro.

Trang web sau sẽ được mở trong google chrome như được hiển thị

Sub test2 ()Làm mờ trình điều khiển làm trình điều khiển web mớiLàm mờ rowc, cc, columnC dưới dạng số nguyênDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Application.Wait Now + Timevalue ("00:00:20")Kết thúc phụ

Bây giờ macro excel đã sẵn sàng để thực hiện các tác vụ cạo. Bước tiếp theo sẽ hiển thị cách thông tin có thể được trích xuất bằng cách áp dụng selen và 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. 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: -

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 kéo thông tin tiêu đề của bảng HTML và dữ liệu tương ứng được liên kết với bảng. Thực hiện các tác vụ sau như được hiển thị: -

Bước 1) Hình thành một vòng lặp for chạy qua thông tin tiêu đề HTML dưới dạng một tập hợp. Trình điều khiển selen phải tìm thông tin tiêu đề của bảng HTML. Để làm điều này, chúng tôi sử dụng phương thức FindElementByClass () và FindElementByTag () để thực hiện tác vụ như được hiển thị

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

Sub test2 ()Dim driver As New WebDriverLàm mờ hàngc, cc, cộtC dưới dạng số nguyênrowc = 2Application.ScreenUpdating = Saitrình điều khiển. Khởi động "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Đối với mỗi thứ Trong trình điều khiển.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Đối với mỗi t Trong th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Tiếp theo tTiếp theo th

Bước 2) Tiếp theo, trình điều khiển selen sẽ định vị dữ liệu bảng bằng cách sử dụng phương pháp tương tự, như đã đề cập ở trên. Bạn phải viết mã sau: -

Sub test2 ()Dim driver As New WebDriverLàm mờ hàngc, cc, cộtC dưới dạng số nguyênrowc = 2Application.ScreenUpdating = Saitrình điều khiển. Khởi động "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Đối với mỗi thứ Trong trình điều khiển.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Đối với mỗi t Trong th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Tiếp theo tTiếp theo thĐối với mỗi tr Trong trình điều khiển.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")cộtC = 1Đối với mỗi td Trong tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolumnC = columnC + 1Td tiếp theorowc = rowc + 1Tiếp theo trApplication.Wait Now + TimeValue ("00:00:20")Kết thúc Sub

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

Excel có thể được khởi tạo bằng thuộc tính Range của trang tính excel hoặc thông qua thuộc tính ô 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 2 có trong sổ làm việc. Hơn nữa, thuộc tính văn bản giúp lấy thông tin văn bản được đặt dưới thẻ HTML.

Sub test2 ()Dim driver As New WebDriverLàm mờ hàngc, cc, cộtC dưới dạng số nguyênrowc = 2Application.ScreenUpdating = Saitrình điều khiển. Khởi động "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Đối với mỗi thứ Trong trình điều khiển.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Đối với mỗi t Trong th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Tiếp theo tTiếp theo thĐối với mỗi tr Trong trình điều khiển.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")cộtC = 1Đối với mỗi td Trong tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolumnC = columnC + 1Td tiếp theorowc = rowc + 1Tiếp theo trApplication.Wait Now + TimeValue ("00:00:20")Kết thúc Sub

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

Bước 3) Khi tập lệnh macro đã sẵn sàng, hãy chuyển và gán chương trình con cho 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 4) Nhấn nút làm mới để nhận đầu ra được đề cập bên dưới

Bước 5) So sánh kết quả trong excel với kết quả của google chrome

Tóm lược:

  • Selenium có thể được phân loại là công cụ tự động hóa tạo điều kiện thuận lợi cho việc thu thập thông tin từ các trang web HTML để thực hiện việc thu thập dữ liệu web bằng cách sử dụng google chrome.
  • Việc cạo trên internet nên được thực hiện cẩn thận.
  • Thông thường, việc loại bỏ thông tin là vi phạm các điều khoản của trang web.
  • Khi việc cạo được thực hiện thông qua selen, thì nó sẽ hỗ trợ nhiều trình duyệt.
  • Nói cách khác, người quét cũng có thể thực hiện các nhiệm vụ tương tự như cạo qua Firefox, Internet explorer.
Công ty Nhóm Đóng trước (Rs) Giá hiện tại (Rs) % thay đổi