如何使用 Python Playwright 从 iframe 检索令牌值?

问题描述 投票:0回答:1

我正在使用 Python Playwright 编写一个脚本来检索网页上的令牌。我能够找到包含它的 iframe,但我很难从 iframe 中提取令牌,该令牌在挑战解决后存储在

data-token-response
属性中。

注意:这里的挑战是我必须解决的具体步骤,然后令牌将填充到

data-token-response
字段

这是我到目前为止所拥有的:

  1. 我使用以下选择器找到包含挑战的 iframe:
TOKEN_IFRAME: str = "(//iframe[contains(@title,'Widget')])[1]"
self.checkbox_frame = self.page.locator(self.variable.TOKEN_IFRAME)

  1. 我尝试从
    data-token-response
    属性中提取令牌。
  2. 我当前检索令牌的代码是:
    async def get_token(self):
        iframe_element = self.page.locator(self.variable.TOKEN_IFRAME)
        token = await iframe_element.get_attribute("data-token-response")
        print(token, await iframe_element.get_attribute("style")) # we do get the style property of the iframe. But the token prints None.
        if captcha_token:
            _print(f"token: {token}")
        else:
            _print("CAPTCHA token not found or not yet solved.")
            return token

我尝试过的:

  • 调试 iframe 的其他属性,这对于样式效果很好,但对于数据令牌响应始终返回 None。
  • 验证 iframe 及其内容是否已完全加载。
python web-scraping iframe playwright playwright-python
1个回答
0
投票

为了与

iframe
交互,您需要将其选择为框架。我认为从
locator
切换到
frame_locator
是您可能需要的唯一调整。

iframe_element = self.page.frame_locator(self.variable.TOKEN_IFRAME)

请参阅剧作家的框架处理文档

© www.soinside.com 2019 - 2024. All rights reserved.