Làm cách nào để cạo nhiều trang Selenium Python?
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/ Show 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 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('https://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
Phần tử này có thể dễ dàng được dịch sang XPath của nó, nhưng trước tiên, chúng tôi cần nhớ rằng chúng tôi không chỉ cố gắng xác định vị trí phần tử này mà còn tất cả tên người chơi. Sử dụng quy trình tương tự, tôi tìm thấy phần tử tiếp theo trong danh sách, Russell Westbrook
Điểm chung giữa hai tên này (và tất cả tên người chơi khác) là 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 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 Mức lương 2019/20 của Russell Westbrook Trong 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 Và danh sách văn bản trả lương… 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 |