Ожидание перед парсингом
Делаю парсинг сайта через requests + bs4.
Столкнулся с такой задачей: часть кода сайта записано в script и парсинг просто выдаёт пустое значение из-за того, что сам script сайта прогружается не вместе с html кодом.
Другими словами, я получаю <div class="tab-cont"> </div>. Через простой браузер значения в этом поле я получаю через несколько секунд после прогрузки страницы, но через парсер получаю пустое значение.
Каким образом можно сделать вход на страницу, но выполнение get запроса через несколько секунд?
url = 'site.com'
r = request.get(url, headers=header)
soup = BeautifulSoup(r, 'html.parser')
info = soup.find('div', class_ = 're-tab-cont')
>>> info = <div class="detail-tab-cont"> </div>
Ответы (2 шт):
Остановка выполнения задачи делается при помощи модуля time.
time.sleep(5) #остановка на 5 секунд
Что бы парсить сайт, который подгружается динамически - вам нужно использовать selenium, и там есть специальный модуль implicitly_wait()
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
driver = webdriver.Firefox(options=options)
driver.implicitly_wait(5.5)
Так же можете использовать решение из коробки с помощью time
from time import sleep
time.sleep(5.5)