首页 > 其他 > 详细

pyppeteer

时间:2021-03-12 12:29:48      阅读:39      评论:0      收藏:0      [点我收藏+]

1.安装

pip3.6 install pyppeteer
pyppeteer-install.exe   # 安装 chromium 浏览器到 pyppeteer 的默认位置

2.用法 https://miyakogi.github.io/pyppeteer/reference.html 文档说明

pyppeteer-install   第一次运行pyppeteer时,它将下载最新版本的Chromium

3.简单用法

import asyncio

from pyppeteer import launch


async def main():
    browser = await launch(headless=True, dumpio=True, autoClose=False, args=[‘--no-sandbox‘, ‘--window-size=1920,1080‘, ‘--disable-infobars‘])  # 进入有头模式
    page = await browser.newPage()  # 打开新的标签页
    # 设置浏览器头
    # await page.setUserAgent("Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5")
    # 设置页面视图大小
    await page.setViewport({‘width‘: 1920, ‘height‘: 1080})
    # 是否启用JS,enabled设为False,则无渲染效果
    await page.setJavaScriptEnabled(enabled=True)
    # evaluate()是执行js的方法,js逆向时如果需要在浏览器环境下执行js代码的话可以利用这个方法 临时修改浏览器属性中的 webdriver 属性
    # await page.evaluate(‘‘‘() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }‘‘‘)
    # 将一段 js 代码加载到页面文档中,当发生页面导航、页面内嵌框架导航的时候加载的 js 代码会自动执行,那么当页面刷新的时候该 js 也会执行,这样就保证了修改网站的属性持久化的目的
    await page.evaluateOnNewDocument(‘‘‘() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }‘‘‘)
    # 访问的网站
    await asyncio.sleep(1)  # 等待
    # 访问主页   timeout:超时时间
    res = await page.goto(‘http://news.baidu.com/‘, options={‘timeout‘: 100000})
    await asyncio.sleep(2)  # 等待
    print("resp_headers:{}".format(res.headers))  # 响应头
    print("resp_status:{}".format(res.status))  # 响应状态
    print("cookies:{}".format(await page.cookies()))  # 打印页面cookies
    print("title:{}".format(await page.title()))  # 打印当前页标题
    await asyncio.sleep(1)
    # print("content:{}".format(await page.content()))  # 获取所有 html 内容
    await asyncio.sleep(1)
    await page.screenshot({‘path‘: ‘./qimai.jpg‘})  # 截图保存路径
    await page.pdf({"path": "./qimai.pdf", "format": ‘A4‘})  # 保存 PDF

    elements = await page.xpath(‘//*[@id="pane-news"]/div/ul/li/strong/a/@href‘)
    print("*" * 200)
    print("elements:{}".format(elements))
    for i in elements:
        print(i)

    await asyncio.sleep(1000)  # 等待
    await browser.close()  # 关闭浏览器


if __name__ == "__main__":
    asyncio.get_event_loop().run_until_complete(main())  # 调用

  

pyppeteer

原文:https://www.cnblogs.com/yoyo1216/p/14522251.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!