Вам не нужны накладные расходы на селен. Страница делает POST-запросы, используя идентификаторы для врача и клиники для получения телефонных номеров. Вы можете удалить эти идентификаторы с начальной страницы, а затем повторить эти запросы, чтобы получить номера телефонов. Я использую идентификатор доктора в качестве ключа для словаря и обновляю значения с помощью номера телефона.
import requests
from bs4 import BeautifulSoup as bs
headers = {
'User-Agent': 'Mozilla/5.0',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'
}
data = {
'doctorId': '3806', #[data-doctor]
'clinicId': '1519', #[data-clinic]
'clickSource': 'mobile'
}
with requests.Session() as s:
s.headers = headers
r = s.get('https://www.gigadocs.com/hyderabad/dentist')
soup = bs(r.content, 'lxml')
tel_numbers = {i['data-doctor']:i['data-clinic'] for i in soup.select('.appointmentBtn')}
for k, v in tel_numbers.items():
data['doctorId'] = k
data['clinicId'] = v
r = s.post('https://www.gigadocs.com/search/getmobilenumbers', data=data).json()
tel_numbers[k] = r['mobile']
print(tel_numbers)