Selenium Hướng dẫn về VBA Excel: Ví dụ về quét web trên Chrome

Quét dữ liệu bằng selen là gì?

Selenium có thể được phân loại là công cụ tự động hóa giúp thu thập thông tin từ các trang web HTML để thực hiện thu thập thông tin web bằng Google Chrome.

Cách chuẩn bị Macro Excel trước khi thực hiện Data Scraping bằng cách sử dụ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 quét dữ liệu trong excel.

Những đ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 nhà phát triển của Excel.

Chuẩn bị macro Excel trước khi thực hiện quét dữ liệu

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

Chuẩn bị macro Excel trước khi thực hiện quét dữ liệu

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

Chuẩn bị macro Excel trước khi thực hiện quét dữ liệu

Bước 4) Khởi tạo một chương trình con mới và đặt tên là test2.

Sub test2()
End sub

Sau đây là kết quả của mô-đun: –

Chuẩn bị macro Excel trước khi thực hiện quét dữ liệu

Bước 5) Truy cập tùy chọn tham chiếu trong tab công cụ và tham chiếu Selenium thư viện kiểu. Các thư viện sau đây sẽ được tham chiếu đến mô-đun vì chúng giúp mở Google Chrome và tạo điều kiện thuận lợi cho việc phát triển tập lệnh macro.

Chuẩn bị macro Excel trước khi thực hiện quét dữ liệu

Bây giờ tệp Excel đã sẵn sàng để tương tác với Internet Explorer. Các bước tiếp theo sẽ là kết hợp tập lệnh macro để hỗ trợ việc quét dữ liệu trong HTML.

Làm thế nào để mở Google Chrome sử dụng VBA?

Đây là bước để mở Google Chrome sử dụng VBA

Bước 1) Khai báo và khởi tạo các biến trong chương trình con như hình dưới đây

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

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

Sau đây là mã.

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Application.Wait Now+Timevalue("00:00:20")
End sub

Mô-đun sẽ có kết quả như sau: –

Mở Google Chrome Sử dụng VBA

Làm cách nào để mở trang web trong Google Chrome bằng VBA?

Sau 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 được truyền dưới dạng dấu ngoặc kép trong thuộc tính.

Thực hiện theo các bước sau như hiển thị

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

Mở trang web trong Google Chrome Sử dụng VBA

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

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

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Driver.get "https://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub

Mở trang web trong Google Chrome Sử dụng VBA

Bây giờ macro excel đã sẵn sàng để thực hiện các tác vụ thu thập dữ liệu. Bước tiếp theo sẽ hiển thị cách trích xuất thông tin bằng cách áp dụng selen và VBA.

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

Giả sử người giao dịch trong ngày muốn truy cập dữ liệu từ trang web hàng ngày. Mỗi lần người 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 cấu trúc dữ liệu. Truy cập mã nguồn HTML bên dưới bằng cách nhấn control + Shift + Tôi

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

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

Như có thể thấy, 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, cần phải 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) Tạo 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. Để thực hiện việc 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 WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get "https://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th

Bước 2) Tiếp theo, trình điều khiển selenium 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 WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"https://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End 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 bảng tính excel hoặc thông qua thuộc tính cells của bảng 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 cell excel của bảng tính 2 có trong sổ làm việc. Ngoài ra, thuộc tính text giúp đưa thông tin văn bản vào thẻ HTML.

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"https://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

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

Quét thông tin từ trang web bằng VBA

Bước 3) Khi tập lệnh macro đã sẵn sàng, hãy chuyển và gán nút chương trình con cho excel và thoát khỏi mô-đun 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út đó. Trong ví dụ này, nút được khởi tạo là làm mới.

Quét thông tin từ trang web bằng VBA

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

Quét thông tin từ trang web bằng VBA

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

Quét thông tin từ trang web bằng VBA

Tổng kết

  • Selenium có thể được phân loại là công cụ tự động hóa giúp thu thập thông tin từ các trang web HTML để thực hiện thu thập thông tin web bằ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 lấy thông tin ra ngoài là trái với các điều khoản của trang web.
  • Khi việc cạo được thực hiện thông qua selen, nó sẽ cung cấp hỗ trợ nhiều trình duyệt.
  • Nói cách khác, máy cạo có thể thực hiện các nhiệm vụ tương tự như cạo qua Firefox, Internet explorer cũng vậy.