Trong thời gian quét web hoặc với mục đích tự động hóa, chúng tôi yêu cầu lấy văn bản từ phần tử HTML của trang. Selenium cho phép chúng ta thực hiện điều này bằng một phương pháp đặc biệt “______37_______”. Phương pháp này giúp chúng tôi hiển thị văn bản hiển thị trong nội dung HTML. Hôm nay chúng ta sẽ đi sâu tìm hiểu để hiểu rõ hơn về tính năng này
Thiết lập môi trường
Vì vậy, chúng ta hãy bắt đầu quá trình. Mô-đun
title = driver.find_element_by_class_name['title'].text print[title]0 cần được nhập từ Selenium và sau đó tạo một đối tượng trình điều khiển từ nó. Tiếp theo, chúng tôi cần chỉ định đường dẫn của
title = driver.find_element_by_class_name['title'].text print[title]1 vì chúng tôi sẽ sử dụng trình duyệt chrome để cuộn trang. Phương pháp
title = driver.find_element_by_class_name['title'].text print[title]2 có sẵn để có cái nhìn tốt hơn. Sau đó thử kết nối với trang web bằng phương pháp
title = driver.find_element_by_class_name['title'].text print[title]3. Chúng tôi sẽ sử dụng đợi ngầm định trong 10 giây
from selenium import webdriver driver = webdriver.Chrome[executable_path = r'G:/chromedriver_win32/chromedriver.exe'] driver.maximize_window[] driver.get['//theautomationzone.blogspot.com/2020/07/mix-of-basic-webelements.html'] driver.implicitly_wait[10]
Tìm văn bản tiêu đề từ một trang web với. chữ[]
Hôm nay chúng tôi sẽ cố gắng tìm văn bản tiêu đề từ blog “khu vực tự động hóa”. Đầu tiên, chúng ta cần tìm phần tử, sau đó chúng ta sẽ sử dụng phương thức text của Selenium Python để lấy văn bản của tiêu đề. Đưa con trỏ chuột vào bên trong trang web và Nhấp chuột phải vào con chuột. Từ menu ngữ cảnh, nhấp vào tùy chọn kiểm tra
Từ html chúng ta có thể sử dụng thuộc tính lớp để tìm phần tử và sau đó áp dụng “. text” để lấy văn bản của tiêu đề. Bây giờ chúng ta sẽ tạo một biến “title” và lưu phần tử web đã định vị với phương thức text trong đó
title = driver.find_element_by_class_name['title'].text print[title]
Văn bản tiêu đề “khu vực tự động hóa” sẽ được in trong bảng điều khiển
Cách lấy văn bản với get_attribute[]
Có một phương thức khác có sẵn trong Selenium gọi là phương thức
title = driver.find_element_by_class_name['title'].text print[title]4 cũng cho phép chúng ta lấy văn bản ra khỏi html. Phương thức
title = driver.find_element_by_class_name['title'].text print[title]4 có thể lấy các đối số như “
title = driver.find_element_by_class_name['title'].text print[title]6”, “
title = driver.find_element_by_class_name['title'].text print[title]7” , “
title = driver.find_element_by_class_name['title'].text print[title]8”. Chẳng hạn, chúng tôi muốn lấy văn bản của đoạn thứ ba. Chúng tôi có thể lấy nó bằng các mã sau
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]
Ở đây, sau khi xác định vị trí webelement, chúng tôi đã sử dụng phương pháp
title = driver.find_element_by_class_name['title'].text print[title]9 để lấy văn bản. Kết quả sẽ như thế này
This is an example of paragraphs with a span inside
Sự khác biệt. văn bản[] và get_attribute[]
Lưu ý văn bản đầu ra của đoạn 3 ở trên. Nó trông không giống như văn bản hiển thị trên trang web. Có một số khoảng trống giữa các cụm từ. Điều này là do có một thuộc tính “
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]0” có sẵn bên trong thẻ HTML và chúng tôi đang lấy văn bản mã theo từng dòng được viết ở phía HTML. Nó sẽ không trả về khoảng trống hoặc ngắt dòng có sẵn bên trong thẻ phần tử HTML
Bây giờ nếu chúng ta cố gắng lấy cùng một văn bản của đoạn thứ ba bằng cách sử dụng phương pháp “
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]1”
para3 = driver.find_element_by_id['p3'].text print[para3]
đầu ra sẽ là
This is an example of paragraphs with a span inside
Như chúng ta có thể thấy văn bản đầu ra giống như văn bản được viết trên trang web. Nó bỏ qua các khoảng trắng bên trong tệp HTML
Vì vậy, sự khác biệt chính là, phương thức
title = driver.find_element_by_class_name['title'].text print[title]4 sẽ trả về cùng một văn bản được viết ở phía HTML trong khi phương thức “
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]1” sẽ sao chép cùng một văn bản được viết trên trang web
Cách lấy văn bản của một URL
Phương thức
title = driver.find_element_by_class_name['title'].text print[title]4 không chỉ cho phép chúng ta đưa văn bản ra khỏi phần tử mà còn cho phép chúng ta lấy văn bản được viết bên trong thuộc tính của thẻ phần tử. Chẳng hạn, chúng ta cần tìm liên kết được đính kèm trong phần “đây là ví dụ về liên kết” của trang web
Bằng cách kiểm tra HTML của phần liên kết Google của trang web, chúng tôi có thể thấy URL có sẵn bên trong thuộc tính
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]5 của thẻ
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]6. Chúng ta có thể sử dụng phương thức
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]7 để lấy giá trị của
paragraph3 = driver.find_element_by_id['p3'].get_attribute["textContent"] print[paragraph3]5
link = driver.find_element_by_id['link'].get_attribute['href'] print[link]
Sau đây, định vị phần tử theo id, chúng tôi đã sử dụng '_______11_______5' bên trong phương thức
title = driver.find_element_by_class_name['title'].text print[title]4 vì nó chứa URL của liên kết Google. nó trả về đầu ra dưới dạng văn bản thuần túy
//www.google.com/
Đây là một cách rất hữu ích để lấy giá trị văn bản của một thuộc tính bên trong thẻ HTML
Cách lấy văn bản từ danh sách thả xuống
Hãy thử đặt danh sách thả xuống “chọn món ăn yêu thích của bạn” thành “Dứa” và nhận văn bản “Dứa” từ đó. Nếu chúng tôi kiểm tra phần tử bằng cách nhấp chuột phải vào phần tử đó, chúng tôi sẽ thấy rằng tùy chọn “Dứa” có sẵn trong thẻ
This is an example of paragraphs with a span inside1
Có một bài viết về “cách chọn menu thả xuống” trong blog Finxter. Bạn có thể sử dụng liên kết sau để biết quy trình tìm phần tử thẻ
This is an example of paragraphs with a span inside1
Cách chọn giá trị menu thả xuống bằng Python Selenium
Ta cần import module
This is an example of paragraphs with a span inside3 và code sẽ theo như bên dưới để có được dòng chữ “
This is an example of paragraphs with a span inside4”
dropdown = driver.find_element_by_id["mySelect"] dropdown.click[] element = Select[dropdown] element.select_by_index['2'] fruit = driver.find_element_by_id["mySelect"].get_attribute["value"] print[fruit]
Ở đây, chúng tôi xác định vị trí phần tử trước và sau đó với sự trợ giúp của phương pháp “
This is an example of paragraphs with a span inside5”, chúng tôi đã chọn giá trị “
This is an example of paragraphs with a span inside6” từ danh sách thả xuống. Cuối cùng, chúng tôi đã sử dụng phương pháp
This is an example of paragraphs with a span inside7 để đưa văn bản “quả dứa” ra khỏi đó
Đó là tất cả về cách lấy văn bản với Selenium trong Python. Tôi hy vọng, bây giờ bạn sẽ dễ dàng lấy văn bản từ trang web hơn
Để tìm hiểu thêm về Python, hãy xem các cheat sheet sau
Yassin Mahmud Abdul Quddus
Yassin Mahmud là một người đam mê blockchain và là người sáng tạo nội dung trong không gian blockchain. Được thúc đẩy bởi niềm đam mê công nghệ phân tán, anh ấy đã chuyển sang lĩnh vực chuỗi khối từ quá trình phát triển ngăn xếp MERN. Với hơn nửa thập kỷ kinh nghiệm hiện tại, anh ấy đang cố gắng đóng góp cho cộng đồng blockchain bằng bài viết của mình. Khi Yassin không viết lách, người ta có thể bắt gặp anh ta đang đi dạo dọc theo các bãi biển hoặc tham quan các địa điểm du lịch ngoạn mục