pyppeteer 坑:page.on(‘response was never awaited Enable tracemalloc to get the object allocation trac

异常回顾:
python版本:3.9
pyppeteer版本:0.2.6
pyee版本:8.2.2

实现响应拦截的功能

async def intercept_response(response):
    # resourceType = response.request.resourceType
    # print(resourceType)
    if 'get-list' in response.url:
        print(response.url)
        # print(await response.json())
        print(await response.text())




async def main():
    browser = await launch({
        'handleSIGINT': False,
        'handleSIGTERM': False,
        'handleSIGHUP': False,  # 以上禁用信号
        'headless': False,
        'dumpio': True,
        'autoClose': False,  # 避免长时间运行 内存泄漏
        'ignoreDefaultArgs': ['--enable-automation'],  # 过滤掉列表中的默认参数
    })
    page = await browser.newPage()
    page.on('response', intercept_response)
    await page.goto('https://www.bhsf.com.cn/index.html#/template/?cid=17&page_type=imageList')
    await asyncio.sleep(200)
    # await browser.close()


asyncio.get_event_loop().run_until_complete(main())

异常信息:

D:\Python\Python39\lib\site-packages\pyee_base.py:83: RuntimeWarning: coroutine ‘intercept_response’ was never awaited
f(*args, **kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

以下是我的解决办法(均测试可用):

一、给 pyee 版本降级

pip install 'pyee==7.0.4' --force-reinstall

二、用 asyncio 包装

修改前:

page.on('response', intercept_response)

修改后:

page.on('response', lambda response: asyncio.ensure_future(intercept_response(response)))

以上参考:https://github.com/pyppeteer/pyppeteer/issues/220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值