相关文章推荐
跑龙套的茶壶  ·  Duvel Tripel Hop ...·  2 月前    · 
英勇无比的铁链  ·  《生化危机 4 ...·  1 年前    · 
玩足球的稀饭  ·  Quantitative ...·  1 年前    · 
pyppeteer.launch(options: dict = None, **kwargs: Any) -> Browser

启动一个新的浏览器,返回 Browser 类。接受字典键值对的关键字配置参数。


常用参数:

  • headless(bool): 是否启用"无头模式"(隐藏浏览器界面),默认为 True 。
  • executablePath(str): 指定 Chromium.exe 文件的路径(不使用内置的chromium)。
  • slowMo(int|float):按指定的毫秒数减慢 pyppeteer 的速度。
  • args(List[str]): 启动 Chromium 的参数。
  • dumpio(bool):是否将浏览器进程标准输出和标准错误输入到 process.stdout 和 process.stderr中。默认是 False。
  • userDataDir(str): 设置用户数据目录。
  • devtools(bool): 是否为每个选项卡自动打开 DevTools 面板, 这个选项只有当 headless 设置为 False的时候有效。

args—>启动chrome的参数:
https://peter.sh/experiments/chromium-command-line-switches/


launch常用参数配置:

kwargs = {
    # 启用浏览器界面
    'headless': False,
    # 多开页面,解决卡死
    'dumpio': True,
    # 设置浏览器全屏
    'args': ['--start-maximized',
             # 取消沙盒模式,沙盒模式下权限太小
             '--no-sandbox',
             # 设置浏览器界面大小
             '--window-size=1366,768',
             # 关闭受控制提示:比如,Chrome正在受到自动测试软件的控制...
             '--disable-infobars',
             # 允许跨域
             '--disable-web-security',
             # 使用代理
             '--proxy-server=127.0.0.1:80',
             # 不走代理的链接
             '--proxy-bypass-list=*',
             # 忽略证书错误
             '--ignore-certificate-errors',
             # log 等级设置,如果出现一大堆warning,可以不使用默认的日志等级
             '--log-level=3',
             # 设置ua
             '--user-agent=Mozilla/5.0'
    'userDataDir': r'D:\Temporary',
    # 用户数据保存目录,这个最好指定一个,
    # 如果不指定,Chrome会自动创建一个临时目录使用,在退出浏览器时自动删除,
    # 在删除的时候可能会删除失败(不知道为什么出现权限问题,我用Windows)导致浏览器退出失败
    # 删除失败时出现报错:OSError: Unable to remove Temporary User Data
    # 或者Chrome进程没有退出,cpu狂飙到99%
2 content()
pyppeteer.connect(options: dict = None, **kwargs: Any) -> Browser

链接已打开的浏览器,返回 Browser 类。接受字典键值对的关键字配置参数。


参数:

  • browserWSEndpoint(str):要连接的浏览器 websocket 端点。(必填
  • ignoreHTTPSErrors(bool):是否忽略 HTTPS 错误。默认为 False。
  • slowMo(int | float):按指定的毫秒数减慢pyppeteer的速度。
  • logLevel(int | str):用于打印日志的日志级别。默认值与根记录器相同。
  • loop(asyncio.AbstractEventLoop):事件循环(实验)。

browserWSEndpoint 的值获取:Browser.wsEndpoint

import asyncio
import pyppeteer
async def main():
    browser = await pyppeteer.launch({'headless': False})
    page = await browser.newPage()
    await page.setViewport({'width': 1366, 'height': 768})
    await page.goto('https://www.baidu.com')
    ws = browser.wsEndpoint
    print(ws)
    await browser.disconnect()  # 断开链接
    browser2 = await pyppeteer.connect({'browserWSEndpoint': ws})
    await browser2.close()
asyncio.get_event_loop().run_until_complete(main())

浏览器Browser


常用属性和方法:
  • process:返回浏览器进程,如果浏览器实例是由 connect 方法创建的则返回 null。
  • browserContexts:返回一个包含所有打开的浏览器上下文的列表。在新创建的浏览器中,这将返回 [BrowserContext]的单个实例。
  • wsEndpoint: 返回 websocket 端点 url,用于connect 方法重链。
  • pages():获取所有可见的标签页。
  • newPage():新建标签页。
  • close():关闭 Chromium 及其所有页面。Browser 对象本身被认为是处理过的并不能再被使用。
  • disconnect():断开 Pyppeteer 和浏览器的连接,但 Chromium 进程仍然在运行。在调用 disconnect 之后,Browser 对象本身被认为是处理过的并不能再被使用。
  • createIncognitoBrowserContext():创建一个新的隐身浏览器上下文。这不会与其他浏览器上下文共享 cookie / 缓存。
  • userAgent():返回浏览器原始的 user-agent。页面可以使用 page.setUserAgent 覆盖浏览器的 user-agent。

注:被 async 关键字修饰的方法是异步方法,调用的时候也必须 await 关键字修饰。

import asyncio
from pyppeteer import launch
async def main():
    browser = await launch({'headless': False})
    page = await browser.newPage()
    await page.goto('https://www.baidu.com')
    print(browser.process)     # 属性不被 async 关键字修饰
    print(browser.wsEndpoint)
    print(browser.browserContexts)
    print(await browser.userAgent())
    print(await browser.pages())
    print(await browser.version())
    print(browser.targets())  # 这个方法在源码中不被 async 关键字修饰
    await browser.close()
asyncio.get_event_loop().run_until_complete(main())
BrowserContext

启动浏览器时,默认情况下使用单个 BrowserContext。
方法 browser.newPage() 在默认浏览器中创建页面背景。

Pyppeteer允许创建隐身浏览器(无痕模式)上下文。如下方法:
browser.createInnamitoBrowserContext()

隐身浏览器上下文不会将任何浏览器数据写入磁盘。

无痕模式:

import asyncio
from pyppeteer import launch
async def main():
    # 创建浏览器实例
    browser = await launch({'headless': False})
    # 启动无痕模式
    context = await browser.createIncognitoBrowserContext()
    # 新建标签页
    page = await context.newPage()
    # 打开目标 url
    await page.goto('https://www.baidu.com')
    # 打印是否无痕模式
    print(context.isIncognito())
    # 关闭无痕模式
    await context.close()
    # 关闭浏览器
    await browser.close()
asyncio.get_event_loop().run_until_complete(main())
                    启动器Launcher启动方式: launch :启动链接一个新的浏览器 content :链接已打开的浏览器,便于崩溃后重链1 launch()pyppeteer.launch(options: dict = None, **kwargs: Any) -> Browser启动一个新的浏览器,返回 Browser 类。接受字典或键值对的关键字配置参数。常用参数:h...
如果您需要Scrapy浏览器集成,请考虑使用
ScrapyPyppeteer集成
 该项目提供了一个Scrapy下载处理程序,该处理程序使用执行请求。 它可用于处理需要JavaScript的页面。 该软件包不会干扰常规的Scrapy工作流程,例如请求计划或项目处理。
在发行后,其中包括部分和实验性,Scrapy允许集成基于asyncio的项目,例如PyppeteerPython 3.6+
 Scrapy 2.0+
 皮皮特0.0.23+
$ pip install scrapy-pyppeteer
通过替换默认的http和https下载处理程序:
 DOWNLOAD_HANDLERS = {
    "http" : "scrapy_pyppeteer.handler.ScrapyPyppeteerDownloadHandler" ,
				
下载文本中的网页源码,由于需要向下拉动滚动条所以使用pyppeteer渲染网页,并执行js代码,可是发现开启无界面的时候似乎执行不了js代码,还有异步的时候好像也执行不了js代码 import asyncio from pyppeteer import launch import re, os,time async def create_page(): browser = await launch(headless=True, dumpio=True) return browser chrome.exe --disable-infobars --remote-debugging-port=9222 --user-data-dir="设置路径" --disable-infobars 表示关闭提示 2. 启动之后chromium通过http://localhost:9222/json得到调试信息,chrome通过http://127.0.0.1:9222/json/version 得到调试信息, 其中webS..
Pyppeteer已移至 JavaScript(无头)chrome / chromium浏览器自动化的非官方Python端口。 免费软件:MIT许可证(包括根据Apache 2.0许可证分发的工作) 文档: : Pyppeteer需要python 3.6及更高版本。 (实验上支持python 3.5) 通过PyPI的pip安装: python3 -m pip install pyppeteer 或从安装最新版本: python3 -m pip install -U git+https://github.com/miyakogi/pyppeteer.git@dev 注意:第一次运行pyppeteer时,它将下载最新版本的Chromium(〜100MB)。 如果您不喜欢这种行为, pyppeteer-install在运行使用pyppeteer的脚本之前运 注意:这是的延续。 在进行任何类型的开发之前,强烈建议您先看一下 ,以便不断进行更新该的工作,以避免重复工作。 JavaScript(无头)chrome / chromium浏览器自动化的非官方Python端口。 免费软件:MIT许可证(包括根据Apache 2.0许可证分发的工作) 文档: : pyppeteer需要Python> = 3.6 使用来自PyPI的pip安装: pip install pyppeteer 或从此安装最新版本: pip install -U git+https://github.com/pyppeteer/pyppeteer@dev 注意:首次运行pyppeteer时,如果系统上未找到最新版本的Chromium,则它将下载最新版本的Chromium(〜150MB)。 如果您不喜欢这种行为,请确保已安装合适的C​​hrom
最近在使用pyppeteer抓淘宝,同事使用JavaScript写调用puppeteer能完美运行。但我改成python就一直报这样一个错误: pyppeteer.errors.NetworkError: Protocol Error (Page.navigate): Session closed. Most likely the page has been closed 而代码中造成这样一个错误...
一. pyppeteer介绍 Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web程序自动测试等任务。 Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。 Pyppeteer的两大特点,chromium浏览器和asyncio框架: Chromium是一款独立的浏览器,是Google为发展自家的浏览器Google Chrome而