首页 > 编程语言 >【Python】pyppeteer 简单使用2

【Python】pyppeteer 简单使用2

时间:2024-07-18 10:40:39浏览次数:12  
标签:node await Python pyppeteer 节点 简单 print nodes page

import sys
sys.path.append("/home/user/.local/lib/python3.9/site-packages")  #将包的路径添加到环境变量
import asyncio
from pyppeteer import launch
from pyppeteer.errors import TimeoutError
from pyppeteer_stealth import stealth #反检测模块,隐藏浏览器特征

width,height = 1366,768
async def main():
    brower = await launch({"executablePath":"/opt/browser360/browser360-cn"}, #指定已安装的浏览器,
                          headless = False,#无界面模式关闭,显示界面
                          args = ["--disable-infobars",f"--window-size={width},{height}"],#关闭提示”Chrome 正受到自动测试软件的控制”,设定界面大小
                          #devtools = True,#打开调试模式,如果这个参数设置为 True,那么 headless 参数就会无效,会被强制设置为 False
                          )
    page = await brower.newPage() #打开一个新的标签页
    await stealth(page)  #反检测模块,隐藏特征
    await page.setViewport({"width":width,"height":height}) #界面大小
    try:
        await page.goto("https://spa6.scrape.center/")
        await page.evaluate("""() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }""") #使用 JavaScript 将它设置为false,规避webdriver检测
        await page.waitForSelector(".item .name", options={'timeout': 20 * 1000}) #等待符合 .item .name 的节点加载出来,最长等待 20 秒
        await page.waitForSelector("h2", options={'timeout': 20 * 1000})  # 等待符合 h2 的节点加载出来,最长等待 20 秒
    except TimeoutError:
        print("TimeoutError")

    print(await page.querySelectorAllEval('.item .name', 'nodes => nodes.map(node => node.href)')) #链接href,class为name
    """调用了 querySelectorAllEval 方法,它接收两个参数,第一个参数是 selector ,代表要选择的节点对应的 CSS 选择器;第二个参数是 pageFunction ,
    代表的是要执行的 JavaScript 方法,这里需要传入的是一段 JavaScript 字符串,整个方法的作用是选择 selector 对应的节点,
    然后对这些节点通过 pageFunction 定义的逻辑抽取出对应的结果并返回。由于提取结果有多个,所以这里 JavaScript 对应的 pageFunction 输入参数就是 nodes ,
    输出结果是调用了 map 方法得到每个 node ,然后调用 node 的 href 属性即可。这样返回结果就是当前列表页的所有电影的详情页 URL 组成的列表了。"""
    print(await page.querySelectorEval('h2', 'node => node.innerText')) #单个节点,第一个节点的文本值
    print(await page.querySelectorAllEval('h2', 'nodes => nodes.map(node => node.innerText)')) #多个节点,文本值,名称 h2 节点
    print(await page.querySelectorAllEval('.cover', 'nodes => nodes.map(node => node.src)'))  # 多个节点,src,封面class为cover
    await brower.close()
asyncio.get_event_loop().run_until_complete(main())

原界面;

原界面有很多条: 

输出:

 

 

标签:node,await,Python,pyppeteer,节点,简单,print,nodes,page
From: https://www.cnblogs.com/shan-gui-yao/p/18308980

相关文章

  • Java语言,MySQL数据库;基于Node+Vue的健康信息管理系统的设计与实现32355(免费领源码)计算
    Node.js健康信息管理系统的设计摘要在如今IT技术快速发展和Internet广泛应用的时代,电子和网络技术给人们生活带来了便利,同时也会直接或间接损害人们的健康。所以,本次的毕业设计创作的意义就是通过信息化的统一管理,给用户录入和查看健康信息提供了方便。本设计主要实现集人......
  • vue element ui 简单表格下钻逻辑浅记
    在Vue.js中结合ElementUI来实现点击表格字段跳转到对应字段的表格,并使用面包屑导航以方便用户随时跳回之前的层级,可以通过以下步骤来完成:步骤1:准备数据结构首先,你需要一个嵌套的数据结构来表示不同级别的表格数据。例如:constdata=[{id:1,name:'Pare......
  • 量化交易策略:波动性指标Keltner通道(附python代码)
    Keltner通道是由著名技术分析师ChesterW.Keltner在上个世纪60年代发明的一种技术指标。它基于价格和某种市场波动性度量(通常为移动平均)之间的关系,用于预测价格趋势的变化。Keltner通道的上下轨分别表示了价格的上限和下限,反映了市场在一定周期内的波动范围。这使得Keltner......
  • 6个强大且流行的Python爬虫库,强烈推荐!
    Python中有非常多用于网络数据采集的库,功能非常强大,有的用于抓取网页,有的用于解析网页,这里介绍6个最常用的库。1.BeautifulSoupBeautifulSoup是最常用的Python网页解析库之一,可将HTML和XML文档解析为树形结构,能更方便地识别和提取数据。BeautifulSoup可以自动将输入......
  • 【python学习】第三方库之tensorflow的定义、功能、使用场景、代码示例和解释
    引言tensorFlow是一个开源的软件库,最初由GoogleBrain团队的研究员和工程师开发,用于数值计算和大规模机器学习tensorFlow提供了丰富的API来支持各种计算任务,并且能够轻松地在多种计算设备上进行部署,包括CPU、GPU和TPU文章目录引言一、安装`tensorflow`第三方......
  • python+flask计算机毕业设计音乐推荐系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着数字音乐产业的蓬勃发展,音乐已成为人们日常生活中不可或缺的一部分。面对海量的音乐资源,用户往往难以从中快速找到符合个人喜好的音乐......
  • python+flask计算机毕业设计中草药智能采购管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着中医药在全球范围内的认可度不断提升,中草药市场的需求量急剧增长。然而,传统的中草药采购管理模式往往依赖于人工操作,存在信息更新滞后......
  • ClickHouse集成LDAP实现简单的用户认证
    1.这里我的ldap安装的是docker版的docker安装的化就yum就好了sudoyuminstalldocker-cedocker-ce-clicontainerd.iodocker-buildx-plugindocker-compose-pluginsudosystemctlstartdocker使用下面的命令验证sudodockerrunhello-worlddockerpullosixia/open......
  • 在Python中使用SWCNN去除水印
    在Python中使用SWCNN去除水印说明首次发表日期:2024-07-17SWCNNGithub官方仓库:https://github.com/hellloxiaotian/SWCNNSWCNN论文链接:https://arxiv.org/abs/2403.05807准备运行环境首先创建一个conda环境,安装SWCNN官方建议的库:condacreate-npy39torchpython=3.......
  • python的tkinter、socket库开发tcp的客户端和服务端
    一、tcp通讯流程和开发步骤1、tcp客户端和服务端通讯流程图套接字是通讯的利器,连接时要经过三次握手建立连接,断开连接要经过四次挥手断开连接。2、客户端开发流程1)创建客户端套接字2)和服务端器端套接字建立连接3)发送数据4)接收数据5)关闭客户端套接字3、服务端开发......