pyppeteer
的使用 安装 属于第三方模块进行安装. pip install pyppeteer
在linux中,如果权限不够则加上. sudo pip install pyppeteer
使用今日头条作为demo
from pyppeteer import launch
import asyncio
?
async def main(timeout=30):# 设定时间超时,默认是30秒
# async 用来申明一个函数是一个异步函数
browser = await launch(headless=True,args=["--no-sandBox"])
# 参数说明:
# headless 参数设为False,变为有头模式
# pyppeteer 支持字典和关键字传递参数
page = await browser.newPage()
# 设置页面大小
await page.setVIEwport(vIEwport={"wIDth":1280,"height":800})
# 是否启用Js,enabled设为False,则无渲染效果
await page.setJavaScriptEnabled(enabled=True)
# 超时时间设置
res = await page.goto(url=url,options={"timeout":1000})
# 响应头
resp_headers = res.headers
# 响应状态
resp_status = res.status
# 等待
await asynico.sleep(2)
# 第二种方法
while not await page.querySelector(".t"):
pass
# 滚动到页面底部
await page.evaluate(‘windows.scrollBy(0,document.body.scrollHeight)‘)
# 截图报存图片
await page.screenshot({"path": "toutiao.png"})
# 获取cookie
print(await page.cookies())
# 打印页面文本信息
print(await page.content())
# 在页面上执行Js脚本
dimensions = await page.evaluate(pageFunction=‘‘‘() => {
return {
wIDth: document.documentElement.clIEntWIDth,// 页面宽度
height: document.documentElement.clIEntHeight,// 页面高度
deviceScaleFactor: window.devicePixelRatio,// 像素比 1.0000000149011612
}
}‘‘‘,force_expr=False) # force_expr=False 执行的是函数
print(dimensions)
# 只获取文本 执行 Js 脚本 force_expr 为 True 则执行的是表达式
content = await page.evaluate(pageFunction=‘document.body.textContent‘,force_expr=True)
print(content)
?
# 打印当前页标题
print(await page.Title())\
# 抓取其他信息
"""
1.选择器,Page.querySelector()
2.选择器,Page.querySelectorAll()
3.xpath表达式,Page.xpath()
"""
# 使用querySelector()
element = await page.querySelector(".Feed-infinite-wrapper > ul>li") # 只抓取一个
print(element)
# 获取所有的文本信息,执行Js代码
content = await page.querySelectorAll(‘(element) => element.textContent‘,element)
print(content)
# 使用xpath
# elements = await page.xpath(‘//div[@]/a‘)
# 使用选择器全选
elements = await page.querySelectorAll(".Title-Box a")
for item in elements:
print(await item.