抖音主页视频抓取

抖音主页视频抓取

月光魔力鸭

2022-09-22 19:59 阅读 1305 喜欢 2 抖音 爬虫

最近折腾的少了,实在没的写了,大约三四个月没更新了,先水一篇。

这个是看了吾爱之后了解的,原来是python写的,这里换了js .

没啥说的,直接上代码。根据主页url地址,抓取对应的主页的视频并进行下载。 地址是从抖音官网上拿到的。

import got from 'got'
import path from 'path'
import fs from 'fs'

let download = async function(url){
  let urlparams = new URL(url);
  let pathname = urlparams.pathname;
  let userId = path.basename(pathname);

  let headers = {
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
  };

  //获取列表
  let api = `https://m.douyin.com/web/api/v2/aweme/post/?reflow_source=reflow_page&sec_uid=${userId}&count=21&max_cursor=0`;
  let list = await got(api, { headers: headers }).json();

  for (let rec of list.aweme_list) {
    let downurl = rec.video.play_addr.url_list[0];
    let authorname = rec.author.nickname;
    authorname = authorname.split('').filter(t => {
        return /^([\u4E00-\u9FA5A-Za-z0-9\uFF0E](?!\u3000))+$/.test(t);
    }).join('');

    let videoname = rec.desc;
    videoname = videoname.split('').filter(t => {
        return /^([\u4E00-\u9FA5A-Za-z0-9\uFF0E](?!\u3000))+$/.test(t);
    }).join('');
    videoname = videoname||rec.aweme_id;
    if (!fs.existsSync('./'+authorname)) {
      fs.mkdirSync('./' + authorname);
    }
    let filePath = './' + authorname + '/' + videoname + '.mp4';
    if (!fs.existsSync(filePath)) {
      let res = await got(downurl, {
        method: 'GET',
        responseType: 'buffer',
        headers: headers,
        http2: true
      });
      fs.writeFileSync(filePath, res.body);
      console.log(filePath);
    }
  }

  return true;
}
export default download;

中间由于名字和描述有一些符号之类的,简单做了下处理。而且抖音是http2的协议,got支持,之前常用的axios不太行了。

没有做循环,只做了第一页,有时间做个小界面出个工具玩。

转载请注明出处: https://chrunlee.cn/article/douyin-video-spider.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
在开发过程中经常会碰到跨frame 去操作的需求,那么如何获得这个frame呢,这里写了一个工具类,用来通过name获得frame的jq对象
错误:The operation is insecure . 在使用canvas的 toDataUrl的时候报错,看了很多资料,基本上都说是设置跨域,但是我一直都有的啊。其实,只是顺序错了,setAttribute('crossOrigin','Anonymous') 要在设置 src之前设置。
在今天之前,我对canvas中rotate其实是一脸蒙逼的... 虽然之前有做过图片旋转,但那是在他人的基础上直接修改的,至于为啥会这样..讲真,还真没注意过,但是今天又需要用到这块了,实在搞不定了,找了各种资料,终于明白了.. 坐标系的问题。
nvm install 16.15.0 : The process cannot access the file because it is being used by another process
在使用echarts 来做统计报表的时候,由于数量较多,准备将同类型的相同属性抽取出来,然后用来做默认属性的。结果发现一个问题
今天小程序上传体验版本后莫名无法获取用户数据,但是本地开发环境是正常的,通过开发工具的真机进行测试也正常,但是通过开发工具的预览又不正常,初步来看代码是没有问题的,可能是哪里设置有问题。
开发的项目中有使用到微信开发,由于之前偶尔才用一次,也是用的别人的地址和测试号,这里记录下自己的操作。防止后续遗忘。
偶尔练习下canvas,这里简单记录下常用API,防止遗忘..加深记忆..努力提高..争取突破...daydayup