首页 > 其他分享 >axios+cheerio抓一本小说

axios+cheerio抓一本小说

时间:2024-08-19 20:26:13浏览次数:6  
标签:axios const text cheerio 一本 import data

import axios from 'axios';
import fs from 'fs-extra';
import path from 'path';
import * as cheerio from 'cheerio'
const instance = axios.create();


async function main(){
    const data={
        url:atob('aHR0cHM6Ly93d3cuM3l0Lm9yZy9tbC8xODk4NDEv'),
        name:'',
        author:'',
        tags:[],
        intro:'',
        list:[]
    }
    const res=await instance.get(data.url)
    const $ = cheerio.load(res.data)
    data.name=$('#info h1').text()
    data.author=$('#info > p:nth-child(2) > a').text()
    data.intro=$('#intro').text()
    console.log(data)
    const nList=[]
    $('#list a').each(function (index,ele){
        const title=$(ele).text()
        const hasM=title.match(/第(\d+)章/)
        if(!hasM){
            return
        }
        const inx=parseInt(hasM[1])
        nList[inx]={
            title,
            href:data.url+path.join('../..',$(ele).attr('href'))
        }
    })
    for(let i=1;i<=nList.length;i++){
        if(!nList[i]){continue}
        const url=nList[i].href
        console.log(i,url)
        const res=await instance.get(url)
        const $ = cheerio.load(res.data)
        const item={}
        item.title=$('.bookname > h1').text()
        item.info=$('#content').html()
        data.list.push(item)
    }
    fs.writeFileSync(data.name+'.json',JSON.stringify(data,null,2))
}
main();

 

标签:axios,const,text,cheerio,一本,import,data
From: https://www.cnblogs.com/caoke/p/18368054

相关文章

  • axios取消请求CancelToken的原理解析及用法示例
    文章目录一、axios的实例与请求流程二、CancelToken的作用三、CancelToken的实现原理四、取消请求的流程五、CancelToken用法六、利用拦截器取消请求1、axios请求拦截器2、axios响应拦截器3、利用路由导航守卫取消请求一、axios的实例与请求流程下图是axios实例......
  • Node.js使用Axios发起http调用
    axios功能比较多,除了基本get/post调用之外,还支持多个接口并发调用、全局配置、拦截器等功能。笔者这里只介绍简单使用方法。安装npminstallaxiosGET请求:constaxios=require('axios');axios.get('http://api.qingyunke.com/api.php',{params:{key:'fre......
  • Vue3+Axios
    使用Vue3和Axios实现CRUD操作在当今的前端开发中,Vue.js作为一款流行的JavaScript框架,正在被越来越多的开发者所青睐。尤其是Vue3引入了CompositionAPI和更优雅的响应式处理,使得模板编写和状态管理变得更加直观。在这篇博客中,我将带领大家通过一个简单的示例,使用......
  • 026、Vue3+TypeScript基础,使用async和await来异步读取axios的网络图片
    01、App.vue代码如下:<template><divclass="app"><h2>App.Vue</h2><Person/></div></template><scriptlang="ts"setupname="App">//JS或TSimportPersonfrom'./......
  • 一本通1215:迷宫答案
    #include<bits/stdc++.h>usingnamespacestd;charmp[105][105];boolvis[105][105];intdx[4]={0,0,1,-1};intdy[4]={-1,1,0,0};intfx,fy,sx,sy,n,c,a=0;voiddfs(intx,inty){  if(x==fx&&y==fy)  {    cout<<"YES"&l......
  • Axios
    1.Axios1.1异步请求发展史1.1.1传统的Ajax传统的Ajax请求是基于XMLHttpRequest(XHR)对象。可以直接使用。但 是使用起来配置较为麻烦,实际开发中使用非常少,在MVC时代通常使用的 是JQuery-Ajax。相对于传统的Ajax现在使用更多的是Fetch请求。1.1.2JQuery-AjaxJQuery-Ajax在前......
  • 信息学奥赛一本通编程启蒙题解(3011~3015)
    前言Hello大家好,我是文宇.正文3011#include<iostream>usingnamespacestd;intmain(){ inta,b,s; a=880; b=500; s=a*b; cout<<s; return0;}注:没有输入的都可以直接输出.3012#include<iostream>usingnamespacestd;inta,b,t;intmain(){ a=10;b=20......
  • 信息学奥赛一本通编程启蒙题解(3021~3025)
    前言hello大家好,我是文宇。正文3021#include<iostream>usingnamespacestd;inta,b,c,d;intmain(){ cin>>a>>b>>c>>d; cout<<a+b+c+d; return0;}3022#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta,b,c; ......
  • Axios请求使用params参数导致后端获取数据嵌套
    问题重述:首先看前端的axios请求这里我使用params参数将data数据传给后端letdata=JSON.stringify(this.posts);axios.post("/blog_war_exploded/insertPost",{params:{data:data......
  • 5.vue中axios封装工程化
    vue工程化中axios封装视频演示地址:https://www.bilibili.com/video/BV121egeQEHg/?vd_source=0f4eae2845bd3b24b877e4586ffda69a通常我们封装需要封装request.js基础的发送请求工具类,再根据业务封装service类,service类是具体业务的接口封装,在页面上直接调用的是servive类......