首页 > 解决方案 > 如何正确地向 Pyppeteer 中的网站发送 POST 请求

问题描述

我正在尝试在 pyppeteer 中编写一个机器人。我试图用我的代码做的是向具有特定 postData 的网站发送 POST 请求

        Add_url = f"https://www.website.com/shop/{productID}/add.json"
        await page.setExtraHTTPHeaders(headers=headers)
        await page.setRequestInterception(True)
        page.o
        atc_post = await Request.continue_(self,overrides={'url':Add_url, 'method':'POST','postData':data})
        print(atc_post.json())

这是我终端的当前输出:

文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/network_manager.py”,第 447 行,在 continue_

如果不是 self._allowInterception:

AttributeError:“Bot”对象没有属性“_allowInterception”

如果有人可以提供帮助,我将不胜感激。

标签: pythonpyppeteer

解决方案


Request.continue_仅在拦截后有效,例如:

async def intercept (req):
    print (req.headers)
    await req.continue_ ()
    pass

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.setRequestInterception(True)
    page.on ('request', lambda req: asyncio.ensure_future (intercept (req)))
    await page.goto('https://www.exemple.com') 
    await browser.close()
    return html

html=asyncio.get_event_loop().run_until_complete(main())


推荐阅读