使用Python解释Javascript web应用程序

2024-06-30 15:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,如果我的编码语言中断了,我熟悉编码,但你可能还是初学者。首先让我解释一下我为什么要这么做,然后是我想从中得到的,希望能给你们一个解决这个问题的想法

我是dlive上的一个小流光器,为了奖励我的观众观看,我使用了一个叫做Incent的服务,该服务通过加密来奖励观众获取密码。我注意到,当有人在聊天室中输入代码时,人们会有更好的体验,而不是在屏幕上闪烁30秒然后消失。并非总是有人坐在聊天室里输入信息,有时还会出现拼写错误等。我想我想让这个过程自动化,使incent与我的流的集成更加无缝。我已经用python编写了我自己的聊天机器人,我只是想让代码通过它。这个机器人正在工作并且能够发送消息,所以这不是我的问题

现在的问题是,如何让python解释删除url上发生的事情,使其只需要删除代码。incent drop url使用javascript,因此我不完全确定如何使其工作。这里有一个预览的url,这样你就可以知道当一个下拉出现时会发生什么https://get.incent.com/overlays/v1/dropcodes/28mIAiGQNa7adlZAg6948N:15LCP76AiNGk6RmRAaKKep?preview

我不知道从这里走哪条路。我一直在玩弄网页抓取的想法,但我更希望它在后台运行,而不是每次需要检查代码时都打开selenium浏览器。我认为这样的方法必须在while循环中连续运行。理想情况下,我希望python每次删除时都能接收代码。我原以为我可以使用请求来完成这项工作,但我不得不承认,我不知道如何才能做到这一点

希望你现在知道问题是什么了,我希望你能帮我解决这个问题


Tags: 代码语言url密码编码屏幕机器人观众
1条回答
网友
1楼 · 发布于 2024-06-30 15:24:17

你可以试试这样的

  • 通过无头浏览器打开页面
  • 等待代码到达(带有class^="RewardCodestyles__Code"]的元素-表示以该类开头)
  • 计算该元素的innertTexttextContent以检索代码
  • 睡眠一段时间(本例中为10秒),然后重新开始

示例代码(带pyppeteer):

import asyncio
from pyppeteer import launch

URL = 'https://get.incent.com/overlays/v1/dropcodes/28mIAiGQNa7adlZAg6948N:15LCP76AiNGk6RmRAaKKep?preview'


async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto(URL)

    # wait until the code arrives
    await page.waitForFunction('''() => {
        return !!document.body.querySelector('[class^="RewardCodestyles__Code"]')
    }
    ''', {
        'timeout': 60000
    })

    # then just extract the code
    code = await page.evaluate('''() => {
        return document.body.querySelector('[class^="RewardCodestyles__Code"]').innerText
    }''')

    # do things with the code here
    print(code)

    await browser.close()


async def forever():
    while True:
        await main()
        # sleep a bit here - for 10 secs.
        await asyncio.sleep(10)

loop = asyncio.get_event_loop()
loop.run_until_complete(forever())

示例运行的输出:

TEST-C0D3
TEST-C0D3
TEST-C0D3
TEST-C0D3
TEST-C0D3
TEST-C0D3

相关问题 更多 >