官方文档
- https://miyakogi.github.io/pyppeteer/reference.html
安装
# 需要 pyppeteer.chromium_downloader
pip install websockets==7.0
# 默认安装driver路径
C:\Users\xxx\AppData\Local\pyppeteer\pyppeteer\local-chromium\chromdriver
# 匹配版本
pyppeteer == 0.0.25
chromdriver == 69.0.3494.0
运行
- 运行第一次时,会自动下载 webdriver
- 使用,函数必须使用 async, 定义为协程函数
- 启动函数
# 必须使用循环事件
loop = asyncio.get_event_loop() # 启动函数
task = []
loop.run_until_complete(asyncio.wait(task))
- 打开浏览器
brower = await launch(self.options)
# 当pyppeteer通过launch()或 连接到chrome时,会创建一个Browser对象connect()
- 打开一个新得页面
page = await self.brower.newPage()
- 设置浏览器界面
page.setViewport(viewport={'width': 1280, 'height': 800})
- 设置浏览器UA
page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36")
- 跳转到目标页面
await self.page.goto(self.login_url)
- xpath 匹配目标
result = await self.page.xpath("//iframe[@id='J_loginIframe']/@src")
- 返回
# 为list,如果需要提取信息,或点击,需要获取该 list 中得某一个元素进行
url = await (await target[0].getProperty('textContent')).jsonValue()
- 提取
# xpath 匹配目标结果
await self.page.type('#TPL_username_1', self.username, {'delay': self.InputTimeRandom() - 50})
- 输入操作
使用 css 查找器
'#TPL_u sername_1'
css 匹配
self.username
- 设置间隔,避免输入太快
{'delay': self.InputTimeRandom() - 50}
- 获得 cookies
await page.cookies()
- 获得页面
await page.content()
- 获得标题
await page.title()
- 关闭浏览器
await browser.close()
- 解析,获得 text
await (await item[0].getProperty('textContent')).jsonValue()
- 获得 href 属性
await (await item[0].getProperty('href')).jsonValue()
原文链接:http://pipe.b3log.org/blogs/AlwaysBeFriday/articles/2019/11/15/1575600976329