0

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

我想要:

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

我发现有一个名为 requests_html 的包,听起来目标是能够做这样的事情。我设法使用 requests_html 登录页面并获取我想要的页面的 HTML 视图。然后应该可以调用

response.html.render()

然后 requests_html 应该使用 pyppeteer,它会下载并启动无头 chromium,加载网页,渲染页面,然后返回结果。这实际上有效,但它只返回登录页面。requests_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)
4

1 回答 1

1

您可以安装 github 版本的 requests-html 并使用以下参数来渲染():

response.html.render(send_cookies_session=True)

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

于 2019-12-17T16:48:02.380 回答