node爬虫的3种方式crawl

24 篇文章 0 订阅

node爬虫

相关包依赖自己装哈!

// 爬虫的相关方法:
// 方法1: 可通过axios直接请求,如果网站是提供相应api的话
// 方法2:通过request请求页面,再分析页面数据
// 方法3:通过puppeteer加载完页面后,再分析

const axios = require("axios");
const request = require('request')
const url = 'https://juejin.cn/frontend';
let cheerio = require('cheerio');


function axiosFun(){
  const url = 'https://api.juejin.cn/user_api/v1/author/recommend?aid=2608&uuid=6937585905940088351&category_id=&cursor=0&limit=20'
  axios.get(url)
  .then((res)=>{
    console.log('res',res.status,res.data);
  },error=>{
    console.error('err',error);
  })
  
}
// axiosFun()

function requestFun(){
  request(url,(err,res,body)=>{
    console.log('err',err);
    // console.log('res',res);
    console.log('body',body);
    let $ = cheerio.load(body, {ignoreWhitespace: true})
    console.log('object',$('title').text());
    const arr = $('body').find('a');
    console.log('arr',$(arr[0]).attr('href'),$(arr[0]).text());
    const rel = []
    for (let i = 0; i < arr.length; i++) {
      let text= $(arr[i]).text()
      if(text){
        let href= $(arr[i]).attr('href')
        rel.push({
          name: text,
          href
        });
      }
    }
  
    console.log('rel',rel.length);
    var fs = require('fs');
    fs.writeFileSync('images.md', JSON.stringify(rel, null, 2))
  })
}
// requestFun()


async function puppeteerFun(){
    const per = require('puppeteer');
    const browser = await per.launch({headless: false});
    const page = await browser.newPage()
    await page.goto(url, {
      waitUntil: 'networkidle2',
    })
    // const arr = await page.$eval('a',(a,b)=>{
    //   console.log('a,b',a,b);
    // })
    let arr=await page.$$eval("a.title",(elements)=>{
      let array=[]
      elements.forEach((item,index)=>{
        array.push({
          title: item.innerHTML,
          href: item.href
        })
        console.log('item',index,item);
      })
      return array
    })
    console.log('arr',arr);
    arr.push({
      name: '日期',
      date: new Date().toLocaleString()
    })
    // console.log('page',page)
    await browser.close();
    const fs = require('fs');
    fs.writeFileSync('webUrl.json', JSON.stringify(arr, null, 2))
  
}
puppeteerFun()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值