Сохранять сессию при использовании функции рендеринга request_html - PullRequest
0 голосов
/ 06 октября 2019

У меня есть небольшая внутренняя веб-страница, требующая входа в систему. При входе в систему загружается простая страница HTML, и существуют сценарии javascript, которые загружают фактическое содержимое страниц.

Я хочу:

  • Войти на страницу
  • Запустить JavaScript
  • Извлечь информацию со страницы
  • Найти ссылки на странице и повторить процедуру

Я обнаружил, что существует пакет с именем questions_html, который звучит так, как будто цель состоит в том, чтобы сделать что-то подобное. Мне удалось использовать request_html, чтобы войти на страницу и получить HTML-представление нужной мне страницы. После этого должна появиться возможность вызова

response.html.render()

, а затем запрос__html должен использовать pyppeteer, который загружает и запускает безголовый хром, загружает веб-страницу, отображает страницу и затем возвращает результат. Это на самом деле работает, но возвращает только страницу входа. Информация о сеансе из request_html не передается pyppeteer и / или chromium.

Возможно ли использовать один и тот же сеанс или мне нужно попытаться войти в систему, используя только pyppeteer?

Вот пример кода, но вам нужна небольшая веб-страница с формой входа в систему и рендерингом JavaScript, чтобы примерить ее:

from requests_html import HTMLSession
from lxml import html

url = "https://example.com"
username = "user@example.com"
password = "hunter2"
session = HTMLSession()
payload = {
    "input_user": username,
    "input_password": password
}
response = session.post(url, data=payload)
# Logged in here
response = session.get(url)
response.html.render()

# Output from this shows login page
print(response.html.html)
...