Selenium là một thư viện và công cụ Python được sử dụng để tự động hóa các trình duyệt web để thực hiện một số tác vụ. Một trong số đó là quét web để trích xuất dữ liệu và thông tin hữu ích có thể không có sẵn. Dưới đây là hướng dẫn từng bước về cách sử dụng Selenium với ví dụ trích xuất dữ liệu lương của cầu thủ NBA từ trang web https. // vòng vèo. com/lương/người chơi/
Bước 1 — Cài đặt và Nhập khẩu
pip install selenium
Sau khi cài đặt, bạn đã sẵn sàng để nhập
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd
Bước 2 — Cài đặt và truy cập WebDriverTrình điều khiển web là một thành phần quan trọng cho quá trình này. Đó là thứ thực sự sẽ tự động mở trình duyệt của bạn để truy cập trang web bạn chọn. Bước này khác nhau tùy thuộc vào trình duyệt bạn sử dụng để khám phá internet. Tôi tình cờ sử dụng Google Chrome. Một số người nói rằng Chrome hoạt động tốt nhất với Selenium, mặc dù nó cũng hỗ trợ Internet Explorer, Firefox, Safari và Opera. Đối với chrome trước tiên bạn cần tải webdriver tại https. // chromedriver. crom. tổ chức/tải xuống. Có một số tùy chọn tải xuống khác nhau dựa trên phiên bản Chrome của bạn. Để tìm phiên bản Chrome bạn có, hãy nhấp vào 3 dấu chấm dọc ở góc trên cùng bên phải của cửa sổ trình duyệt, cuộn xuống để trợ giúp và chọn “Giới thiệu về Google Chrome”. Ở đó bạn sẽ thấy phiên bản của mình. Tôi có phiên bản 80. 0. 3987. 149, được hiển thị trong ảnh chụp màn hình bên dưới
Bây giờ bạn cần biết nơi bạn đã lưu bản tải xuống webdriver trên máy tính cục bộ của mình. Của tôi chỉ được lưu trong thư mục tải xuống mặc định của tôi. Giờ đây, bạn có thể tạo biến trình điều khiển bằng đường dẫn trực tiếp của vị trí trình điều khiển web đã tải xuống của bạn
driver = webdriver.Chrome['/Users/MyUsername/Downloads/chromedriver']
Bước 3 — Truy cập trang web qua PythonBước rất đơn giản nhưng rất quan trọng. Bạn cần mã của mình để thực sự mở trang web mà bạn đang cố gắng tìm kiếm
driver.get['//hoopshype.com/salaries/players/']
Khi chạy, đoạn mã này sẽ mở trình duyệt đến trang web bạn mong muốn
Bước 4— Xác định vị trí thông tin cụ thể mà bạn đang thu thậpĐể trích xuất thông tin mà bạn đang muốn cạo, bạn cần xác định vị trí XPath của phần tử. XPath là một cú pháp được sử dụng để tìm bất kỳ phần tử nào trên trang web. Để xác định vị trí XPath của phần tử, hãy đánh dấu phần tử đầu tiên trong danh sách những gì bạn đang tìm kiếm, nhấp chuột phải và chọn kiểm tra; . Ví dụ của tôi, trước tiên tôi muốn tìm tên cầu thủ NBA, vì vậy trước tiên tôi chọn Stephen Curry
Trong các công cụ dành cho nhà phát triển, giờ đây chúng ta thấy phần tử “Stephen Curry” xuất hiện như vậy
@class="name"]']Và bây giờ để lấy văn bản của tên từng người chơi vào một danh sách, chúng tôi viết chức năng này
players_list = []
for p in range[len[players]]:
players_list.append[players[p].text]Theo quy trình tương tự này để có được mức lương của người chơi…
Mức lương 2019/20 của Stephen Curry
$38.506.482Trong khi kiểm tra các phần tử này và dịch sang XPath, chúng ta có thể bỏ qua kiểu và giá trị dữ liệu, chỉ lo lắng về lớp
salaries = driver.find_elements_by_xpath['//td[@class="hh-salaries-sorted"]']
Và danh sách văn bản trả lương…
salaries_list = []
Bước 5 — Áp dụng cho mỗi năm có sẵn và kết hợp mọi thứ lại với nhau
for s in range[len[salaries]]:
salaries_list.append[salaries[s].text]Thông thường, khi sử dụng Selenium, bạn sẽ cố truy xuất dữ liệu nằm trên nhiều trang khác nhau từ cùng một trang web. Trong ví dụ của tôi, hoopshype. com có dữ liệu lương NBA từ mùa giải 1990/91
Như bạn có thể thấy, sự khác biệt giữa URL của mỗi mùa chỉ là vấn đề về số năm được đưa vào cuối. Vì vậy, URL cho mùa giải 2018/19 là https. // vòng vèo. com/salaries/players/2018-2019/ và URL của mùa giải 1990/91 là https. // vòng vèo. com/salaries/players/1990-1991/. Cùng với đó, chúng tôi có thể tạo một chức năng lặp lại qua từng năm và truy cập từng URL riêng lẻ, sau đó đặt tất cả các bước mà chúng tôi đã trình bày trước đây cùng nhau cho từng năm riêng lẻ. Tôi cũng ghép từng cầu thủ với mức lương của họ cho mùa giải đó với nhau, đặt vào một khung dữ liệu tạm thời, thêm năm vào khung dữ liệu tạm thời đó, sau đó thêm khung dữ liệu tạm thời này vào khung dữ liệu chính bao gồm tất cả dữ liệu chúng tôi đã thu được. Mã cuối cùng ở bên dưới
Làm cách nào để có nhiều trang trong Selenium?
Đặt thuộc tính hệ thống thành Chromedriver và chỉ định đường dẫn của nóKhởi tạo webdriver sang chromedriver mớiNhận URL của trang web và tối đa hóa trangLấy tay cầm cửa sổ của cửa sổ chaLấy tay cầm cửa sổ của tất cả các cửa sổLàm cách nào để xử lý nhiều cửa sổ trong Selenium WebDriver Python?
Xử lý nhiều cửa sổ con trong Selenium Python .Nhấp vào liên kết “Phương thức bật lên cửa sổ'Trong trang web mới, nhấp vào nút “Theo dõi Twitter & Facebook” để mở các cửa sổ conChuyển sang từng cửa sổ con đang mở bằng tiêu đề trangIn tiêu đề trang của mỗi cửa sổ conĐóng phiên trình duyệtLàm cách nào để xử lý nhiều cửa sổ trong Selenium?
Các bước thực hiện. .Lấy handle của cửa sổ cha bằng lệnh. Chuỗi parentWindowHandle = trình điều khiển. .In tay cầm cửa sổ của cửa sổ chaTìm phần tử trên trang web bằng ID là công cụ định vị phần tửMở nhiều cửa sổ conLặp lại qua các cửa sổ conLàm cách nào để xử lý nhiều tab trình duyệt trong Selenium?
Selenium 101. Quản lý nhiều tab .Khởi chạy trình duyệt của bạnTối đa hóa trình duyệt của bạnKhởi chạy nhiều tabChuyển đổi giữa các tabThực hiện hành động trên mỗi tabĐóng trình duyệtChủ Đề