加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

pyppeteer的使用

发布时间:2020-12-14 00:39:35 所属栏目:Linux 来源:网络整理
导读:pyppeteer 的使用 安装 属于第三方模块进行安装. pip install pyppeteer 在Linux中,如果权限不够则加上. sudo pip install pyppeteer 使用 使用今日头条作为demo from pyppeteer import launch import asyncio ? async def main( timeout= 30): # 设定时间超

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[@class="title-box"]/a‘)
? ?# 使用选择器全选
? ?elements = await page.querySelectorAll(".title-box a")
? ?for item in elements:
? ? ? ?print(await item.getProperty(

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读