За последние пару дней я создал очень простой c python веб-браузер, использующий селен, который очищает определенный веб-сайт с перечнем автомобилей и собирает данные о конкретном c марке и модели автомобиля. Однако у меня возникла проблема со ссылкой на метод внутри метода селен.
class crawler:
def __init__(self, make, model):
self.car_make = make
self.car_model = model
self.driver = webdriver.Chrome('C:/Users/ecc/Downloads/chromedriver/chromedriver.exe')
self.driver.get("car-listing-website")
sleep(2)
self.driver.find_element_by_xpath("//select[@id='carPickerUsed_makerSelect']").click()
sleep(1)
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_make}]").click()
self.driver.find_element_by_xpath("//select[@id='carPickerUsed_modelSelect']").click()
sleep(1)
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_model})]").click()
У меня проблема со ссылками на значения self.car_make и self.car_model в последних нескольких строках кода:
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_make}]").click()
self.driver.find_element_by_xpath("//select[@id='carPickerUsed_modelSelect']").click()
sleep(1)
self.driver.find_element_by_xpath("//option[contains(text(), {self.car_model})]").click()
После этого запуска говорится, что это недопустимые выражения Xpath. Я предполагаю, что мой вопрос, это может быть даже достигнуто в течение селена? Если да, то это просто ошибка синтаксиса?
Для контекста, цель состоит в том, чтобы иметь возможность использовать экземпляры crawler (), чтобы иметь возможность просматривать любой тип марки и модели на веб-сайте без необходимости вручную обновить код для поиска этих разных марок и моделей. Например, в идеале вы могли бы использовать следующий код для получения данных листинга для Ford Mustangs:
crawler('Ford','Mustang')