Добрый день,
Я довольно плохо знаком с Python и Selenium, и мне нужна помощь по следующей проблеме:
Фрагмент моего кода выглядит следующим образом:
num_page_items = len(date)
blank = "0"
try:
with open('results.csv', 'a') as f:
for i in range(num_page_items):
f.write(name[i].text + "#" + surname[i].text + "#" + ref[i].text + "#" + url[i].text + "\n")
except IndexError:
with open('results.csv', 'a') as f:
f.write(blank)
У меня есть несколько переменных, которые очищают сайт с помощью селена.Пример данных и ожидаемый результат следующие:
Имя: Джо Фамилия: Ссылка на мыло: 1234 URL: www.example.com
Имя: Билл Фамилия: Смит Ссылка:4567 URL: www.dot.com
ожидаемый результат
, когда присутствуют все элементы, скрипт Python работает хорошо, однако при наличии одного элемента (в примере: Ref не существует во второй записи) не существует, вывод выглядит следующим образом
вывод, когда элемент не существует
что я могу сделатьустановить переменную в «Null», если переменная не существует на веб-странице, поэтому ожидаемый новый вывод будет следующим:
ожидаемый вывод, когда элемент не существует
Так же, как примечание, ошибка, которую я получаю, не является исключением Selenium, но является IndexError, поэтому используется выражение "IndexError" кроме оператора
РЕДАКТИРОВАТЬ - Предложение Фелипе Гутьерреса
большой фрагмент кода с Фелипе 'Предложение s:
for url in links:
driver.get(url) #goes to the array and opens each link
company = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[2]/ul/li/div/div[1]/span""")
date = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[1]/div[2]/div/span""")
ref = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[3]""")
title = driver.find_elements_by_xpath("""//*[@id="page-title"]/span""")
urlinf = driver.current_url
num_page_items = len(date)
blank = "blank"
for ref in ref:
if ref is None:
ref = 0
with open('results.csv', 'a') as f:
for i in range(num_page_items):
f.write(company[i].text + "#" + date[i].text + "#" + ref[i].text + "#" + title[i].text + "#" + urlinf + "\n")
driver.close()
Теперь я получаю следующую ошибку:
Traceback (последний вызов был последним): файл "accc_for_loop_nest.py", строка 50, в файле f.write(company [i] .text + "#" + date [i] .text + "#" + ref [i] .text + "#" + title [i] .text + "#" + urlinf + "\ n") TypeError: объект 'WebElement' не поддерживает индексирование