1 安裝模塊 pip install pyppeteer web
2 初次調用瀏覽器
import asyncio
from pyppeteer import launch
async def main():
browser = await launch({'headless': False,'dumpio':True, 'autoClose':False,'args': ['--no-sandbox', '--window-size=1366,850']})
page = await browser.newPage()
await page.setViewport({'width': 1366, 'height': 768})
await page.goto('http://www.baidu.com')
# await page.screenshot({'path': 'example.png'}) 截屏
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
# 第一次調用 會開始下載須要的插件工具 ,若是設置成無頭瀏覽器,可能會報超時的錯誤
3 經常使用的屬性以及方法cookie
title = await page.title() # 獲取標題
print(title)
cookie = await page.cookies() # 獲取cookie , 字典形式
print(cookie)
targe = page.target # 暫時不清楚
print(targe)
cov = await page.content() # 獲取渲染後網頁的內容
print(cov)
4 選擇器 less
使用 page.querySelector若是沒有找到指定的對象,則返回None,而不是拋出異常。無論規範不規範,反正比selenium爽多了。async
5 避免反爬,可在加載頁面以前注入js代碼 工具
在page.goto(xxxx) 前加入如下代碼oop
page.evaluateOnNewDocument(
""" var _navigator = {};
for (name in window.navigator) {
if (name != "webdriver") {
_navigator[name] = window.navigator[name]
}
}
Object.defineProperty(window , 'navigator' ,{
get : () => _navigator,
})
"""
)
6 缺點 , 當程序中涉及到點擊某個標籤的話,可能將進程卡死lua
7 用於爬蟲, 效率有待驗證插件