Tôi đang cố gắng lấy thông tin từ một trang web và sau đó tái sử dụng nó ... vì điều đó tôi sử dụng selenium với Python.
Những gì tôi đã làm cho đến nay là:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome[ChromeDriverManager[].install[]]
driver.get['//www.olx.ro/oferta/vand-apartament-3-camere-2-dormitor-1-living-IDdJOij.html']
time.sleep[10]
inputElement = driver.find_element_by_class_name["spoiler"]
time.sleep[12]
inputElement.send_keys[Keys.ENTER]
Nếu trên trang này, bạn nhấp vào "Suna Vanzatorul", số điện thoại của người bán sẽ xuất hiện ... Tôi muốn lấy thông tin này ....
Mục nên được nhấp có lớp:
Liên hệ-Button Link-Phone {'Path': 'Phone', 'Id': 'Dcuxh', 'ID_RAW': '195069687'}
Thật không may, điều này không tĩnh, nó là động và sau khi nhấp vào lỗi này xuất hiện:
selenium.common.exceptions.nosuchelementexception: Thông điệp: Không có yếu tố như vậy: Không thể định vị phần tử: {"Phương thức": "Bộ chọn CSS", "Bộ chọn": ". .4103.97]
Xin vui lòng làm thế nào tôi có thể trích xuất thông tin đó từ trang web đó ...
exception
là gì?
Một exception
là một sự kiện xảy ra trong quá trình thực hiện một chương trình, phá vỡ luồng thông thường của các hướng dẫn của chương trình.
Tại sao NoSuchElementException
xảy ra ở selen?
Khi chúng tôi cố gắng tìm bất kỳ yếu tố nào trong một trang HTML không tồn tại, NoSuchElementException
sẽ được nâng lên.
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="userNam"]"}
Những lý do có thể để gỡ lỗi
Dưới đây là một số ví dụ về các kịch bản sẽ tăng một ngoại lệ.
1. Thay đổi mã nguồn của trang web
Nó có thể là mã nguồn của trang web có thể đã được thay đổi kể từ lần cuối cùng bạn truy cập. Thay đổi mã của bạn theo nguồn mới để giải quyết vấn đề.
2. Lỗi chính tả của phần tử
Kiểm tra chéo chính tả của yếu tố bạn muốn tìm.
3. Xpath không hợp lệ
Khi các phần tử mới được thêm hoặc xóa khỏi mã nguồn của trang web, XPath của phần tử cụ thể đó cũng thay đổi. Kiểm tra XPath để xác định xem nó có hợp lệ không.
Thử nghiệm
Khi chúng tôi cố gắng chạy mã bên dưới, nó sẽ tăng NoSuchElementException
. Điều này là do chúng tôi cố gắng tìm một phần tử được gọi là userNam
, nhưng tên phần tử trang web trong mã nguồn là ____10.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
PATH=r"provide your chrome driver path here"
driver = webdriver.Chrome[PATH]
driver.get["//demo.guru99.com/test/newtours/"]
user_name = driver.find_element_by_name["userNam"]
password = driver.find_element_by_name["password"]
submit = driver.find_element_by_name["submit"]
user_name.send_keys["mercury"]
password.send_keys["mercury"]
submit.click[]
Xử lý ngoại lệ
Kịch bản sẽ chấm dứt khi một ngoại lệ được nâng lên. Chúng ta có thể xử lý các ngoại lệ với khối
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="userNam"]"}
1 và tiếp tục với luồng của tập lệnh.from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import time
PATH=r"C:\Users\GUTKRISH\chromedriver.exe"
driver = webdriver.Chrome[PATH]
driver.get["//demo.guru99.com/test/newtours/"]
try:
user_name = driver.find_element_by_name["userNam"]
user_name.send_keys["mercury"]
except NoSuchElementException:
print["exception handled"]
password = driver.find_element_by_name["password"]
submit = driver.find_element_by_name["submit"]
password.send_keys["mercury"]
submit.click[]
THẺ LIÊN QUAN
Selen
Python
HTML
cộng đồng
Người đóng góp