Я запустил частный проект: просмотр веб-страниц с помощью Python и BeautifulSoup в коде Visual Studio (1.41.0).
Мне удалось очистить другой сайт с такой же структурой, что и у моей проблемы сайт». Однако теперь я столкнулся с тем, что BeautifulSoup не находит все теги div (их должно быть 20 на сайт, и я нахожу только 3 из них). Я сообщил себе о переполнении стека, но не нашел решения (или, очевидно, не понял его).
Веб-сайт: https://www.comparis.ch/gesundheit/arzt/pathologie
html Интересующая меня структура выглядит следующим образом:
Я получаю все <div class="css-15dj4ut"></div>
от <div class="css-fh99y9 excbu0j0">...</div>
, но ни одного от <div class="css-roynbj excbu0j0"></div>
. У вас есть идеи, почему?
В итерации по каждому URL, чтобы попасть на каждый сайт.
for i in range(0, endIndex):
try:
if i == 0:
urls.append(basicUrl)
page = urllib.request.urlopen(urls[i])
soup = BeautifulSoup(page, 'html.parser')
getSurgeonName(soup)
else:
urls.append(basicUrl + urlAddon + str(i + 1))
page = urllib.request.urlopen(urls[i])
soup = BeautifulSoup(page, 'html.parser')
getSurgeonName(soup)
except:
print("An URL request error occured.")
Версия функции 1:
def getSurgeonName(soup):
# gets just first 3 surgeons of site
docName = re.compile('css-15dj4ut')
docNameTags = soup.find_all('div', attrs={'class': docName})
for a in docNameTags:
docNameList.append(a.getText())
Версия функции 2:
def getSurgeonName(soup):
parentClass = re.compile('css-fh99y9 excbu0j0')
parentItems = soup.find_all('div', attrs={'class': parentClass})
for parent in parentItems:
children = parent.findChildren('div', {"class": "css-15dj4ut"})
docNameList.append(children[0].getText())
parentClass = re.compile('css-roynbj excbu0j0')
parentItems = soup.find_all('div', attrs={'class': parentClass})
for parent in parentItems:
children = parent.findChildren('div', {'class': 'css-15dj4ut'})
docNameList.append(children[0].getText())