利用puppeteer采集百度数据,并写入json文件

2023-11-06

利用puppeteer采集百度数据,并写入json文件


代码篇,属于日常采集篇,后期会mongdb来存贮数据


const puppeteer = require("puppeteer");
const fs = require('fs');

(async()=>{
    try{
       const browser = await puppeteer.launch({
        headless:true,
        args: [
            '–disable-gpu', // GPU硬件加速
            '–disable-dev-shm-usage', // 创建临时文件共享内存
            '–disable-setuid-sandbox', // uid沙盒
            '–no-first-run', // 没有设置首页。在启动的时候,就会打开一个空白页面。
            '–no-sandbox', // 沙盒模式
            '–no-zygote',
            '–single-process' // 单进程运行         
        ]
    });

       const page = await browser.newPage();

       await page.goto("https://www.baidu.com/",{
        'timeout': 0 //无限大
    });

    await page.waitFor(3000);

    let body = await page.evaluate(() => {
           let top = [...document.querySelectorAll('#s-top-left a')];
           let buttom = [...document.querySelectorAll('.s-hotsearch-content li a')];
           let buttom_layer = [...document.querySelectorAll('.s-bottom-layer-content p a')];
           let title = document.querySelector('.title-text').innerText;


           return {
               title:title,
               buttom:buttom_layer.map((b)=>{      
                return {    
                    name: b.text
                  }
               }),  
            top:top.map((a)=>{      
                return { 
                    name: a.text
                  }
               }), 
            hot_list:buttom.map((c)=>{
                return {     
                    name: c.text
                  }
               })};

       });     

       fs.writeFile('./json/course-list.json',JSON.stringify(body,null,'\t'),function(err, data) {
        if (err) {
            throw err;       
        }});

       console.log(body);        
       browser.close();
    }catch(err){
	        console.log(`this is the ${err}`);
    }
})();

结果:


{
  title: '百度热榜',
  buttom: [
    { name: '设为首页' },
    { name: '关于百度' },
    { name: 'About Baidu' },
    { name: '百度营销' },
    { name: '使用百度前必读' },
    { name: '意见反馈' },
    { name: '帮助中心' },
    { name: '京公网安备11000002000001号' },
    { name: '京ICP证030173号' }
  ],
  top: [
    { name: '新闻' },
    { name: 'hao123' },
    { name: '地图' },
    { name: '直播' },
    { name: '视频' },
    { name: '贴吧' },
    { name: '学术' },
    { name: '更多' },
    { name: '网盘' },
    { name: '知道' },
    { name: '百科' },
    { name: '图片' },
    { name: '宝宝知道' },
    { name: '文库' },
    { name: '经验' },
    { name: '音乐' },
    { name: '查看全部百度产品 >' }
  ],
  hot_list: [
    { name: '1土耳其召见中国大使 中方回应热' },
    { name: '4杀人犯纸面服刑15年 84人担责' },
    { name: '2备孕者可以接种新冠疫苗' },
    { name: '5好利来辟谣卷入西藏冒险王事件' },
    { name: '3女孩不堪养三个弟妹轻生 妇联介入' },
    { name: '6美驱逐舰穿航台海 东部战区回应' }
  ]
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用puppeteer采集百度数据,并写入json文件 的相关文章

随机推荐

  • 如何控制小程序的tabBar的显示和隐藏

    1 使用wx hideTabBar 方法隐藏tabBar 2 使用wx showTabBar 方法显示tabBar 参考文档
  • 适配器模式代码示例

    package com example shipeiqi public interface ThreeElectricOutlet 用来刻画三相插座 public abstract void connectElectricCurrent p
  • maven-metadata.xml使用

    最近在开发过程中 发现工程中的一些包有问题 主要分为以下两种 1 最新包 版本号未变 只是被更新了 少了一个方法 2 jar包被更新了 但是无法更新最新的包下来 首先先确定一下更新包会导致更新哪些文件 下面都以a 1 0 1 snapsho
  • 学习笔记:机器学习之支持向量机(一、最大间隔算法)

    活动地址 CSDN21天学习挑战赛 1 简介 支持向量机也是一种二分类模型 它是通过在特征空间中建立间隔最大的分类器 这是有别于感知机模型的一点 支持向量机可分为线性可分支持向量机 线性支持向量机 非线性支持向量机 2 函数间隔 几何间隔
  • node后台快速开发框架

    任何可以用 JavaScript 来写的应用 最终都将用 JavaScript 来写 node js是用JS语言编写的 JaveScript已经是世界上最流行的语言之一 用它可以实现任何功能需求 无论是后台开发 前端 App 桌面应用程序
  • 华为OD机试 C++ 最佳植树距离

    题目 小明得到了一项任务 在一个沙地里种树 不过 有些地方不能种树 只能选特定的位置来种 为了让树之间的空间尽可能大 从而更好地防沙 你要帮小明决定每棵树应该种在哪里 举个例子 如果合适的种树地点是1 3 5 6 7 10 13 你有3棵树
  • CountDownLatch理解一:与join的区别

    首先 我们来看一个应用场景1 假设一条流水线上有三个工作者 worker0 worker1 worker2 有一个任务的完成需要他们三者协作完成 worker2可以开始这个任务的前提是worker0和worker1完成了他们的工作 而wor
  • zabbix-server无法启动

    故障现象 监控界面无数据 1 netstat lntup 先查看zabbix server进程是否正常 2 tail f var log zabbix zabbix server log 查看后台日志 表示一个子进程死掉 是一个zabbix
  • 平凯星辰合伙人余梦杰:全球化和云计算趋势下的开源生态构建

    开源是技术发展的大趋势 其开放的全球生态 敏捷的技术创新以及快速的产品迭代 都有助于企业的发展 而云的蓬勃发展则加速了企业数字化的进程 开源和云两者交融 必然会迸发更多势能 2022年7月27日 在2022开放原子全球开源峰会数据库论坛上
  • 在 IDEA 中连接数据库实现增删改查,使用dao封装数据库操作+bean封装实体类+util封装数据库连接与释放(含源码下载)

    在 IDEA 中连接数据库实现增删改查 使用dao封装数据库操作 bean封装实体类 util封装数据库连接与释放 主要内容 利用SQLyog图形化工具建立数据库 具体代码搭建 bean目录下的 用户实体类User util中对数据库的连接
  • ARM汇编指令集——跳转指令、内存传输指令、软中断产生指令、协处理器指令、伪指令、伪操作(如何从底层直接操纵CPU)

    一 跳转指令 完成程序跳转 实质就是对PC操作 赋值 b bl跳转是短跳转 跳转范围 32MB start mov r0 1 mov r1 2 mov r3 3 b func b跳转 不带返回值 mov r4 4 func mov r5 5
  • vue目录树组件(树状结构列表)

    一般数据类展示内容 大多采用树状结构展示内容 类似效果如下 关注微信公众号 查看效果 左侧是导航分类 可以进行新建 对单项导航分享和删除 单击导航 在右侧查询出当前导航下所有目录结构 可以新建目录 新增类型分为三种 目录可以无限嵌套 当然也
  • flutter开发过程坑收集(二) coding相关

    1 Row 里面套 textfield报错 The following assertion was thrown during performLayout BoxConstraints forces an infinite width Ro
  • 常用端口号与对应的服务

    在网络技术中 端口 Port 大致有两种意思 一是物理意义上的端口 比如 ADSL Modem 集线器 交换机 路由器用于连接其他网络设备的接口 如RJ 45端口 SC端口等等 二是逻辑意义上的端口 一般是指TCP IP协议中的端口 端口号
  • Mysql 5.7.21 免安装版下载配置

    下载地址为 https dev mysql com downloads mysql 最下面根据自己的操作系统选择合适的型号 下载完以后解压缩到自定义的路径 这里注意的是路径中不要存在中文 解压缩后以后 新建一个ini形式的文件 名字为my
  • 动态规划or贪心算法--剪绳子/切割杆

    需求一 剪绳子 将长度为n的绳子剪成若干段 求各段长度乘积的最大值 分析 1 动态规划 设f n 代表长度为n的绳子剪成若干段的最大乘积 如果第一刀下去 第一段长度是i 那么剩下的就需要剪n i 那么f n max f i f n i 而f
  • 树莓派使用pip安装cython

    树莓派使用pip安装cython 百度到的安装方法 pi raspberrypi pip3 install Cython Looking in indexes https pypi org simple https www piwheels
  • BitBlaze Vine和TEMU的安装

    在安装之前自然需要下载Vine和TEMU的源代码啦 Vine的官网 戳这里 和TEMU的官网 戳这里 分别提供了Vine和TEMU的源码下载 在下载完成后 下面开始Vine和TEMU的安装 一 gcc 3 4的安装和设置 本次安装的平台是U
  • JSP毕业设计源码带论文和答辩、大作业、实例程序源码下载合集【10套】

    精选10套基于JSP的毕业设计源码 论文 大家好 给大家筛选整理一些质量很高的JSP毕设设计程序 源码 论文 讲解视频 希望能对大家有所帮助 温馨提示 可按ctrl F 快速定位找到所要的资源 点击资源名即可进入下载页面 序号 类型 基于J
  • 利用puppeteer采集百度数据,并写入json文件

    利用puppeteer采集百度数据 并写入json文件 代码篇 属于日常采集篇 后期会mongdb来存贮数据 const puppeteer require puppeteer const fs require fs async gt tr