Я запускаю функцию, которая захватывает некоторые данные с веб-сайта и записывает их в базу данных pandas. Я использую селен и geckodriver.
...code...
first_names = driver.find_elements_by_class_name('first-name')
first_names = [name.text for name in first_names]
last_names = driver.find_elements_by_class_name('last-name')
last_names = [name.text for name in last_names]
commit_status = driver.find_elements_by_class_name('school-name')
commit_status = [commit.text for commit in commit_status]
#error is happening below
athlete['commit_school'] = athlete['commit'].str.replace('\d+', '').str.replace('/',
'').str.replace('VERBAL', '').str.replace('SIGNED', '')
athlete['first'] = athlete['first'].str.title()
athlete['last'] = athlete['last'].str.title()
...code...
Я затем l oop через эту функцию на go через аналогичные данные на разных веб-страницах состояний. Иногда он обычно возвращает данные на странице и переходит к следующему состоянию, в то время как в других случаях я получаю: AttributeError: Может использовать аксессор .str только со строковыми значениями! ... и код ломается. Меня смущает то, что время, когда я получаю ошибку, кажется произвольным. Иногда я делаю это через 1/4 l oop, а иногда 3/4 l oop.
Моя первая попытка исправить была попытка / except, но я не уверен, правильно ли я делаю это или это лучший подход:
athlete['state'] = state_all[:length:]
athlete['hs'] = hs_all[:length:]
athlete['commit'] = commit_status[:length:]
try:
athlete['commit_school'] = athlete['commit'].str.replace('\d+', '').str.replace('/',
'').str.replace('VERBAL', '').str.replace('SIGNED', '')
athlete['first'] = athlete['first'].str.title()
athlete['last'] = athlete['last'].str.title()
except AttributeError:
pass
athlete['list'] = 'Rivals_' + year + '_' + list_state
athlete['home'] = profile_page[:length:]
Ошибка происходит внутри этот оператор try / except, но я думаю, что он просто пропускает все его, если обнаруживает ошибку.