• pyppeteer对于iframe中的滑块


    
    import asyncio
    import time
    import numpy, random
    import pyppeteer
    async def main():
        ip = "xxxxxx"      #代理ip
        port = "xxxx"      #代理端口
        browser = await pyppeteer.launch({'headless': False,
                                          'args': [
                                              '--window-size={1300},{600}'
                                              '--disable-extensions',
                                              '--hide-scrollbars',
                                              '--disable-bundled-ppapi-flash',
                                              '--mute-audio',
                                              '--no-sandbox',
                                              '--disable-setuid-sandbox',
                                              '--disable-gpu',
                                              '--disable-infobars'
                                              f'--proxy-server={ip}:{port}'
                                          ],
                                          'dumpio': True
                                          })
    
        page = await browser.newPage()    #打开一个新页面
    
    
    
        await page.goto('url')   #你要去的页面
        time.sleep(1)
        await page.setUserAgent('5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36')
        await page.evaluateOnNewDocument('() =>{ Object.defineProperties(navigator,'
                                              '{ webdriver:{ get: () => undefined } }) }')
        await page.evaluateOnNewDocument('() =>{ Object.defineProperties(navigator,'
                                              '{ appVersion:{ get: () => 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 } }) }')
    
        frame = page.frames   #获取所有的iframe
        iframe = frame[1]
        await iframe.hover("#nc_1_n1z")   #iframe中的元素聚焦
        await page.mouse.down()
        # time.sleep(1000)
    
        # 3 滑动
        print(random_linspace(100,800))
        start = 0
        end = 0
        for a in random_linspace(4,800):
            a = int(a)
            print(f'滑动{a}')
            end +=a
            print(end, start)
            await  page.mouse.move(end, start)
            start=end
    
    
    
    
    def random_linspace(num, length):
    
        start, end = 0.5 * (length / num), 1.5 * (length / num)
        # 借助三方库生成一个标准的等差数列,主要是得出标准等差 space
        origin_list = numpy.linspace(start, end, num)
        space = origin_list[2] - origin_list[1]
        # 在标准等差的基础上,设置上下浮动的大小,(上下浮动10%)
        min_random, max_random = -(space / 10), space / 10
        result = []
        # 等差数列的初始值不变,就是我们设置的start
        value = start
        # 将等差数列添加到 list
        result.append(value)
        # 初始值已经添加,循环的次数 减一
        for i in range(num - 1):
            # 浮动的等差值 space
            random_space = space + random.uniform(min_random, max_random)
            value += random_space
            result.append(value)
        return result
    
    
    
    asyncio.get_event_loop().run_until_complete(main())
    
  • 相关阅读:
    Android属性动画
    android 保存配置文档
    android 不自动弹出虚拟键盘
    android 常用代码
    android imageswitcher gallery 根据数据库内图片名字进行查看/删除
    android 文件内容和 textview 操作
    用 java 语言获取 1N 的不重复随机数
    android 数据库 备份还原
    解决Ubuntu 输入法不显示
    android 添加文本内容到sqlite表中
  • 原文地址:https://www.cnblogs.com/pythonywy/p/14150206.html
Copyright © 2020-2023  润新知