Мне неясно, как проверить наличие определенного xpath в операторе if / else (я также не уверен, что использование xpaths - лучший метод).
Я, по сути, хочу сделатьследующее (со списком URL-адресов, которые ссылаются на результаты поиска, которые могут существовать или не существовать / быть полными):
Для каждого URL-адреса:
- проверить, соответствует ли соответствующая страница результатов поискасуществует
- если она существует, проверьте, существует ли кнопка «Подробнее»
- , если она существует, проверьте, существует ли каждое поле данных / заполнено ли
- для всех пустых полей /разделы / страницы, заполните словарь пробелами
Я попытался сделать это, определив функцию для проверки существования xpath и используя ее во вложенных операторах if / else, но этовозвращая ошибки.
Текущий код выглядит следующим образом:
Функция для проверки существования xpath (логическое значение):
def hasxpath(xpath):
try:
driver.find_element_by_xpath(xpath)
return True
except:
return False
Код для работы через список URL-адресов:
for url in urls:
driver = webdriver.Chrome(executable_path='/xxx')
driver.get(url)
# Check if search result page exists
if hasxpath('xxx') == True:
# If 'More Info' button exists, click it
if hasxpath('xxx') == True:
driver.find_element_by_xpath('xxx').click()
# For each field, check if it exists and if so collect data
# (example below for 'Name' field)
if hasxpath('xxx') == True:
name = driver.find_element_by_xpath('xxx')
name = name.text
else:
name = ''
driver.close()
else:
driver.close()
else:
driver.close()
По-прежнему не работает, когдаСтраница не существует (вместо выполнения driver.close () выдается ошибка).Есть ли это легко исправить?Или, может быть, даже лучший способ проверить эту информацию и найти данные (вместо использования xpaths)?