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.
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() End sub
Sau đây là kết quả của mô-đun: –
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.
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: –
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: –
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
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: –
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.
Bước 4) Nhấn nút làm mới để có được đầ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ổ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.