抖音主页视频抓取

抖音主页视频抓取

月光魔力鸭

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


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
前端时间搞了个小转码,放在后台,但是特别占带宽,想着能不能从前台把这个事搞定呢?读取图片的二进制,然后将字节流处理后重新生成图片展示处理啊。
在我们通过canvs画图的时候经常会用到圆,且需要计算出圆上某点的坐标,由于我数学没学好,总是记不得怎么获取,这里记录下,加深记忆
在使用echarts 来做统计报表的时候,由于数量较多,准备将同类型的相同属性抽取出来,然后用来做默认属性的。结果发现一个问题
通过jspdf ,我们可以将页面或图片生成pdf下载下来,如果是一些复杂的页面,我们可以将页面转成图片,然后把图片加入到pdf中,生成并下载。
先记录下,不定哪天就查了..防止找不到或不全
我们有时候会拿textarea来做编辑器,但是常用编辑器都是支持tab缩进的,这里对textarea监听下事件处理下即可实现。
codewars上的一个题目,这里记录下解决方法。
现象:在IOS中,jsp页面绑定的点击事件,点击后延迟很大,接近1000ms,反应很慢