抖音主页视频抓取

抖音主页视频抓取

月光魔力鸭

2022-09-22 19:59 阅读 1320 喜欢 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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
项目中需要使用treegrid,找了下easyui 和 ext都有,但是项目用的框架是 byyui,如果为了treegrid 就把这些都加载的话,感觉不太合算。找了大家常用的基于jquery的treegrid.
如何通过js调用本地摄像头呢?获取后如何对视频进行截图呢?在这里跟大家做一个简易的Demo来实现以上几个功能。
在页面中不同的frame之间进行相互调用的话,我们可以通过frame获取对应的window然后进行调用,但是如果是浏览器不同的tab之间呢?
先记录下,不定哪天就查了..防止找不到或不全
通过修改数据库编码处理存储emoj表情导致的报错问题。
jsQR 是一款纯粹的由javascript实现的二维码识别库,可以在浏览器端使用,也可以在后端node.js环境使用。我之前使用过其他的识别库,例如:qrcode-reader 或其他,在使用上都比较麻烦,而且识别率并不高。jsQR是后来发现的,感觉(没有实际对比验证)jsQR识别率要更高些,使用起来也更简单,不需要安装其他依赖软件。
之前的时候都是在各大主机厂商手动进行申请免费的,直到阿里的免费期限变更为3个月.. 我就开始觉的有些麻烦了,还不如使用这个let's encrypt进行部署呢。
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。