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/

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 WebDriver

Trì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 Python

Bướ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.482

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

salaries = driver.find_elements_by_xpath['//td[@class="hh-salaries-sorted"]']

Và danh sách văn bản trả lương…

salaries_list = []
for s in range[len[salaries]]:
salaries_list.append[salaries[s].text]
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

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ới
Nhận URL của trang web và tối đa hóa trang
Lấy tay cầm cửa sổ của cửa sổ cha
Lấ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ổ con
Chuyển sang từng cửa sổ con đang mở bằng tiêu đề trang
In tiêu đề trang của mỗi cửa sổ con
Đóng phiên trình duyệt

Là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ổ cha
Tì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ổ con
Lặp lại qua các cửa sổ con

Là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ạn
Tối đa hóa trình duyệt của bạn
Khởi chạy nhiều tab
Chuyển đổi giữa các tab
Thực hiện hành động trên mỗi tab
Đóng trình duyệt

Chủ Đề