当前位置:   article > 正文

pyppeteer使用方法_pyppetter ifframe

pyppetter ifframe

什么是 Pyppeteer

要想知道什么是 Pyppeteer,首先应该先了解一下 Puppeteer

Puppeteer 是 Google 基于 Node.js 开发的一个工具,拥有 Puppeteer 即可通过 JavaScript 来控制 Chrome 浏览器的一些操作,也可以用于网络爬虫上,其 API 极其完善,功能非常强大。

Pyppeteer 是 Puppeteer 的 Python 实现,Pyppetter 基于 Chromium 浏览器通过执行一些动作来进行网页渲染,Pyppeteer 基于 Python 的新特性 async 实现,因此它也支持异步操作,效率相对于 Selenium 也有一定的提高。

安装

pip install pyppeteer -i https://pypi.douban.com/simple
  • 1

快速使用

import asyncio
from pyppeteer import launch


async def main():
    options = {
        "executablePath": r"C:\Program Files\Google\Chrome\Application\chrome.exe",
        "headless": False,
        "defaultViewport": {"width": 1920, "height": 1080},
        "autoClose": True,
        "dumpio": True,
        "args": [
            '--disable-infobars',
            '--no-sandbox',
            '--start-maximized',
        ],
    }
    browser = await launch(**options)
    page = await browser.newPage()
    await page.goto('https://www.baidu.com')
    await asyncio.sleep(2)
    page_text = await page.content()  # 页面内容
    print(page_text)
    await browser.close()


if __name__ == '__main__':
    # loop = asyncio.get_event_loop()
    # loop.run_until_complete(main())
    asyncio.run(main())  # python3.7以上版本使用

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

常用参数

参数描述
executablePath (str)chrome.exe运行的路径
headless (bool)无头模式
autoClose (bool)自动关闭浏览器
dumpio (bool)设置True 解决浏览器多开卡死
args (List[str])在执行过程中可以传入的额外参数
–disable-infobars关闭自动化提示框
–start-maximized窗口最大化模式

页面解析

通过 Page 对象的 xpath 方法提取资源,并使用 getProperty 方法和 .jsonValue() 获取资源

name = await (await name_list[0].getProperty('textContent')).jsonValue()
url = await(await url_list[0].getProperty("href")).jsonValue()
  • 1
  • 2

输入点击

await map_page.type("#username", username)
await map_page.type("#password", pwd)
await map_page.click("#legal-agreement > label > div")
  • 1
  • 2
  • 3

执行JS脚本

y = await pixabay_page.evaluate('document.documentElement.scrollTop')
  • 1

滚动条刷新页面

temp = None
while True:
    y = await pixabay_page.evaluate('document.documentElement.scrollTop')
    if y == temp:
        break
     else:
        print('滚动条刷新')
        temp = y
        await pixabay_page.evaluate('window.scrollBy(0, document.documentElement.clientHeight)')
        await asyncio.sleep(2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

截图

await page.screenshot({'path': 'page.png'})
  • 1

元素等待

await map_page.waitForXPath(f'//div[text()="{error_msg}"]', {'timeout': 10000})
  • 1

切换iframe

frame_lst = mail_page.frames
for frame in frame_lst:
	if frame.name == "iframeMail":
        pass
  • 1
  • 2
  • 3
  • 4

cookies操作

cookie_lst = await verify_page.cookies()
for cookie in cookie_lst:
    if cookie.get("name") == "session":
        session = cookie.get("value")
        print(session)
  • 1
  • 2
  • 3
  • 4
  • 5

页面操作

# 刷新
await page.reload()
# 后退
await page.goBack()
# 前进
await page.goForward()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

切换页面

await mail_page.bringToFront()
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/372327
推荐阅读
  

闽ICP备14008679号