打开浏览器是通过pyppeteer.launcher.launch(options: dict = None, **kwargs) 方法,运行该函数后,会得到一个pyppeteer.browser.Browser实例,也就是说浏览器对象实例。
launch方法是必须使用的方法,所以,详细学学它的参数,也可以直接阅读官方文档:
launcher.launch 这是实现浏览器的打开,里面有许多参数
ignoreHTTPSErrors (bool): 是否HTTPS错误,默认是 False.
headless (bool): 是否以无头模式(无界面模式)执行,默认为True,为True时是不会弹出可视界面的,所以,上面代码运行时设置headless=False。注意,下面还有个devtools参数,表示是否出现打开调试窗口,如果devtools设置为True,headless就算设置为False也会弹出可视界面。
executablePath (str): Chromium或Chrome浏览器的可执行文件路径,如果设置,则使用设置的这个路径,不使用默认设置.
slowMo (int|float): 设置这个参数可以延迟pyppeteer的操作,单位是毫秒.
args (List[str]): 要传递给浏览器进程的一些其他参数.
ignoreDefaultArgs (bool): 如果有些参数你不想使用默认值,那么,通过这个参数设置,不过,孩子,最好别用,有危险(电脑会爆炸).
handleSIGINT (bool): 是否响应 SIGINT 信号,是否允许通过快捷键Ctrl+C来终止浏览器进程,默认值为True,也就是允许.
handleSIGTERM (bool): 是否响应 SIGTERM 信号,也就是说kill命令关闭浏览器,,默认值为True,也就是允许.
handleSIGHUP (bool): 是否响应 SIGHUP 信号,即挂起信号,默认值为True,也就是允许.
dumpio (bool): 是要将浏览器进程的输出传递给process.stdout 和 process.stderr 对象,默认为False不传递。
userDataDir (str): 用户数据文件目录.
env (dict): 以字典的形式传递给浏览器环境变量.
devtools (bool): 是否打开调试窗口,上面介绍headless参数是说过,默认值为False不打开.
logLevel (int|str): 日志级别,默认和 root logger 对象的级别相同.
autoClose (bool): 当所有操作都执行完后,是否自动关闭浏览器,默认True,自动关闭.
loop (asyncio.AbstractEventLoop): 时间循环。
appMode (bool): Deprecated.
一般来说我们只是会设置headless,devtools,和传入一些必要的args
newPage()方法,相当于我们在浏览器里点开了新建选项卡
goto(),里面传入我们想要的url,即可前往指定的网页
选择器
Page类选择器相关方法有5个,并且这五个都有别名,分别是:
J()别名querySelector()
JJ()别名querySelectorAll()
JJeval()别名querySelectorAllEval()
Jeval()别名querySelectorEval()
Jx()别名xpath()
page.pdf(options)
options 具备以下属性的参数对象:
path 保存PDF文件的路径. 如果path 是一个相对路径,则它是相对于current working directory. 如果没有提供此值项值, 将不会保存PDF。
scale 网页缩放的值。默认为 1.
displayHeaderFooter Display header and footer. Defaults to false.
headerTemplate HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them:
date formatted print date
title 文档标题
url 文档url
pageNumber 当前页码
totalPages 总页数
footerTemplate HTML template for the print footer. Should use the same format as the headerTemplate.
printBackground Print background graphics. Defaults to false.
landscape Paper orientation. Defaults to false.
pageRanges Paper ranges to print, e.g., ‘1-5, 8, 11-13’. Defaults to the empty string, which means print all pages.
format Paper format. If set, takes priority over width or height options. Defaults to ‘Letter’.
width Paper width, accepts values labeled with units.
height Paper height, accepts values labeled with units.
margin Paper margins, defaults to none.
top Top margin, accepts values labeled with units.
right Right margin, accepts values labeled with units.
bottom Bottom margin, accepts values labeled with units.
left Left margin, accepts values labeled with units.
returns: <Promise> Promise which resolves with PDF buffer.
NOTE 生成pdf的操作只有Chrome浏览器才有效。
page.pdf()以 print的 css media生成pdf,如果想生成一个 screenmedia的PDF,请在使用 page.pdf()之前调用page.emulateMedia(‘screen’)方法。
// Generates a PDF with 'screen' media type.
await page.emulateMedia('screen');
await page.pdf({path: 'page.pdf'});
1
2
3
width, height, 和 margin属性接受的值应该明确带上相应的单位,否则将会被默认为 px单位。
一些例子:
page.pdf({width: 100}) - 宽度为100px
page.pdf({width: '100px'}) - 宽度为100px
page.pdf({width: '10cm'}) - 宽度为 10厘米
所有可选的单位:
px - pixel
in - inch
cm - centimeter
mm - millimeter
format 属性的可选值:
Letter: 8.5in x 11in
Legal: 8.5in x 14in
Tabloid: 11in x 17in
Ledger: 17in x 11in
A0: 33.1in x 46.8in
A1: 23.4in x 33.1in
A2: 16.5in x 23.4in
A3: 11.7in x 16.5in
A4: 8.27in x 11.7in
A5: 5.83in x 8.27in
A6: 4.13in x 5.83in
网友评论