Message: invalid type: null, expected a string at line 1 column 12

Есть парсер, но почему - то не работает перелистывание страниц, хотя все должно быть в порядке, просто выбивает ошибку Message: invalid type: null, expected a string at line 1 column 12 Вот есть цикл перелистывания

 try:
                a_next_page = driver.find_element_by_css_selector('.pager__number-lbl-i')
                url = a_next_page.get_attribute('href')

            except NoSuchElementException:
                break

Вот ссылка на сайт с которого нужно спарсить данные:

https://comfy.ua/ua/catalogsearch/result/index/?p=3&q=+Gazer&search_provider=anyquery&strategy=vectors%2Czero_queries_predictor

пробовал 3 css селектора, а именно:

 a_next_page = driver.find_element_by_css_selector('.pager__number-lbl-i')
 a_next_page = driver.find_element_by_css_selector('.category-next__i')
 a_next_page = driver.find_element_by_css_selector('.category-next')

в чем может быть проблема? Вот строка в которой выбивает ошибку

while True:
            print('Load:', url)
            driver.get(url)

Вот собственно в чем проблема, все идет хорошо до конца страницы, а потом в ссылке возвращает значение None

('Штатна магнітола Gazer CM5509-RB for Hyundai Accent (RB) (2010-2015)', '12 999\n₴\nБонусами\n130 ₴', 'Есть в наличии')
('Штатна магнітола Gazer CM6510-GFW for Mitsubishi Outlander (GFW) (2014-2017)', '17 619\n₴\nБонусами\n176 ₴', 'Есть в наличии')
('-', '-', 'Есть в наличии')
Load: None

Выбивает ошибку в 37 строке Message: invalid type: null, expected a string at line 1 column 12

Load: None
Message: invalid type: null, expected a string at line 1 column 12

Трассировка стека:
 >  File "C:\Users\К.Бояр (Второй)\source\repos\ParcerComfy\ParcerComfy\ParcerComfy.py", line 37, in parse
 >    driver.get(url)
 >  File "C:\Users\К.Бояр (Второй)\source\repos\ParcerComfy\ParcerComfy\ParcerComfy.py", line 85, in <module> (Current frame)
 >    items = parse(url)

Ответы (1 шт):

Автор решения: gil9red

У вас в url значение None, поэтому тут ошибка:

print('Load:', url)
driver.get(url)

В логах написано про значение url:

Load: None

Переменная url становится None тут:

try:
    a_next_page = driver.find_element_by_css_selector('.pager__number-lbl-i')
    url = a_next_page.get_attribute('href')
except NoSuchElementException:
    break

Представьте случай, когда есть тег a, но у него нет атрибута/значения href, думаю это ваш случай.

Решения тут 2:

  1. Самый простой. Добавьте в css-селектор условие, что нужен тег с атрибутом href (в прошлом ответе было такое решение):
    a_next_page = driver.find_element_by_css_selector('.pager__number-lbl-i[href]')
    
  2. Добавьте условие, что если url будет пустой, то break:
    try:
        ...
        url = a_next_page.get_attribute('href')
        if not url:
            break
    
    except NoSuchElementException:
        break 
    
→ Ссылка