使用request_html的呈现功能时保持会话

时间:2019-10-06 16:11:36

标签: python pyppeteer

我有一个很小的内部网页,需要登录。登录后,将加载一个简单的HTML页面,并且有javascript脚本可以加载页面的实际内容。

我要:

  • 登录页面
  • 运行javascript
  • 从页面中提取信息
  • 在页面中找到链接并重复该过程

我发现有一个名为requests_html的软件包,听起来像目标是能够执行此操作。我设法使用request_html登录该页面并获取所需页面的HTML视图。然后应该可以打电话

response.html.render()
然后

和request_html应该使用pyppeteer,下载并启动无头铬,加载网页,呈现页面,然后返回结果。这实际上是有效的,但是它仅返回登录页面。来自request_html的会话信息不会传递到pyppeteer和/或Chrome。

是否可以使用相同的会话,或者我是否需要尝试仅使用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)

1 个答案:

答案 0 :(得分:0)

您可以安装request-html的github版本,并使用以下参数进行render():

response.html.render(send_cookies_session=True)

这将维护您在会话中用于呈现的Chromium页面实例中的登录授权。