Возникла такая проблема. У меня есть имя, фамилия, дата (с какого по какой год этот человек учился) и город, где он учился. Мне нужно найти его научные работы (или убедиться что их нет). Вот пример страницы с которой я парсил
https://cyberleninka.ru/search?q=%D0%B2%D0%B0%D0%B...
. Небольшое объяснение моей задумки: Если имя, фамилия и дата совпадают с указанными мы должны взять ссылку для проверки города. Вот функция, которая это делает
def __parse_links(self, name, page_count, year, geo):
try:
list_links = []
for page in range(1, page_count + 1):
url = 'https://cyberleninka.ru/search?q={}&page={}'.format(name + ' ' + geo, page)
soup = self.__get_url_raw(url)
time.sleep(4)
all_variation_name = self.__creat_all_variation_name(name.split())
all_teg_li_in_list_page = soup.find('ul', {'id': 'search-results'})
all_teg_li_in_list_page = all_teg_li_in_list_page.find_all('li')
list_links = list()
for li in all_teg_li_in_list_page:
name_text = li.find('span').text.lower()
date_text = li.find_all('span')[-1].text.lower()
if (self.__check_exist_name_in_text(name_text, all_variation_name)) and (self.__check_exist_date_in_text(date_text, year)):
list_links.append(li.find('a').get('href'))
return list_links
except Exception as e:
if self.log is not None:
log_error(self.log, e, '__parse_links')
Но тут у меня возникла проблема. Строка all_teg_li_in_list_page = all_teg_li_in_list_page.find_all('li') периодически получает None т.е. он не находит ('ul', {'id': 'search-results'}), хотя этот класс есть на странице (ссылка, приведённая мной для примера это одна из тех страниц где он не нашёл этот класс)
Необычно в этом и то, что я не могу найти этот класс с помощью поиска (ctrl+f, утверждает, что нашёл элемент, но не показывает его). Так же эта проблема возникает не всегда. Он может 20 раз подряд спокойно находить этот класс, но потом теряет и выбивает ошибку ERROR: 'NoneType' object has no attribute 'find_all'. Изначально я думал, что страница не прогружается (из-за чего там и стоит time.sleep), но это мне не помогло. Так же я думал, что проблема в скриптах, но я не вижу чтобы на странице прогружались скрипты. По какой причине bs4 может периодически не находить класс, который там точно есть?