Парсинг сайта, начать парсить сайт после полной загрузки
я хочу спарсить сайт, но он динамически подгружается(в начале 1 html, через время другой,пока подгрузиться)Я всегда получаю первый.Так вот, как бы так сделать, что бы он парсился через секунд 5-10) Код для примера import sys import time import requests import lxml.html
class JoobleParser:
def __init__(self, base_url):
self.base_url = base_url
self.last_time = ''
def get_page(self):
try:
res = requests.get(self.base_url)
except requests.ConnectionEror:
return
if res.status_code < 400:
return res.content
def parse(self, html):
pass
def run(self):
pass
if __name__ == "__main__":
parser = JoobleParser('site-my')
page = parser.get_page()
print(page.decode())
Ответы (1 шт):
Автор решения: Mr. JS
→ Ссылка
Если Вы хотите парсить динамически загружаемые сайты, следует использовать selenium вместо requests. При этом в вашем случае следует обратить внимание сразу на следующие моменты:
- Использовать WebDriverWait для ожидание окончания загрузки ресурса. Например, последним загружается ссылка с текстом "Print this article", в этом случае:
...
driver.get(url)
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT , 'Print this article')))
# url - адрес целевой страницы сайта, driver - Selenium WebDriver
- Важно также после загрузки страницы прокрутить её до конца. Например, посредством следующего кода:
content = ''
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1)
if content != driver.page_source:
content = driver.page_source
continue
else:
break
# content - содержимое, driver - Selenium WebDriver