pyppeteer
pyppeteer 是非官方 Python 版本的 Puppeteer 库,浏览器自动化库,由日本工程师开发。
Puppeteer 是 Google 基于 Node.js 开发的工具,调用 Chrome 的 API,通过 JavaScript 代码来操纵 Chrome 完成一些操作,用于网络爬虫、Web 程序自动测试等。
pyppeteer 使用了 Python 异步协程库 asyncio,可整合 Scrapy 进行分布式爬虫。
puppet 木偶,puppeteer 操纵木偶的人。
pyppeteer和puppeteer的不同点
- pyppeteer支持字典和关键字传参,puppeteer只支持字典传参
# puppeteer支支持字典传参
browser = await launch({
'headless':True})
# pyppeteer支持字典和关键字传参
browser = await launch({
'headless':True})
browser = await launch(headless=True)
- 元素选择器方法名$变为querySelector
# puppeteer使用$符
page.$()/page.%%()/page.$x()
# pyppeteer使用python风格的函数名
page.querySelector()/page.querySelectorAll()/page.xpath()
# 简写方式
page.J()/page.JJ()/page.Jx()
- page.evluate()和page.querySelectorEval()的参数
puppeteer的evaluate()方法使用JavaScript原生函数或JavaScript表达式字符串。pyppeteer的evaluate()方法只使用JavaScript字符串,该字符串可以是函数也可以是表达式,pyppeteer会进行自动判断。但有时会判断错误,如果字符串被判断成了函数,并且报错,可以添加参数force_expr=True
,强制pyppeteer作为表达式处理。
获取网页内容:
content = await page.evaluate('document.body.textContent',force_expr=True)
获取元素的内部文字:
element = await page.querySelector('h1')
title = await page.evaluate('(element) => element.textContent',element)
安装
1、安装pyppeteer
pip install pyppeteer
2、安装chromium
pyppeteer-install
简单使用
import asyncio
from pyppeteer import launch
async def main():
url = 'https://www.toutiao.com/'
# headless参数设置为Falase,则变成有头模式
browser = await launch(headless=False, ignoreDefaultArgs=['--enable-automation'])
page = await browser.newPage()
# 设置页面视图大小
awai