爬取抖音网页版短视频

  • 目标
  • 项目准备
  • 网站分析
  • 反爬分析
  • 每一页的链接分析
  • 代码实现
  • 效果显示

目标

爬取抖音短视频,批量下载到本地。

项目准备

软件:Pycharm
第三方库:requests,fake_useragent,re
网站地址:http://douyin.bm8.com.cn/d_1.html

网站分析

打开网站。

首先判断是静态加载或者动态加载。
鼠标向下拉动,发现滑到底部出现页码之类的,初步判定为静态加载。

Ctrl+U查看源代码,Ctrl+F调出搜索框,输入一些网页上出现的文字。

可以找到,最终判定为静态加载类型。

反爬分析

同一个ip地址去多次访问会面临被封掉的风险,这里采用fake_useragent,产生随机的User-Agent请求头进行访问。

每一页的链接分析

第一页链接:http://douyin.bm8.com.cn/d_1.html
第二页链接:http://douyin.bm8.com.cn/d_2.html
第三页链接:http://douyin.bm8.com.cn/d_3.html

可以发现规律,就是每页的数字在变化。

代码实现

1.导入相对应的第三方库,定义一个class类继承object,定义init方法继承self,主函数main继承self。

import  requests
from fake_useragent import UserAgent
from lxml import etree
class douyin(object):def __init__(self):self.url = 'http://douyin.bm8.com.cn/d_{}.html'ua = UserAgent(verify_ssl=False)#随机产生user-agentfor i in range(1, 100):self.headers = {'User-Agent': ua.random}def mian(self):pass
if __name__ == '__main__':spider = douyin()spider.main()

2.发送请求,获取网页。

    def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return html

3.解析网页,获取视频链接,下载到本地。

    def parse_html(self,html):links=re.compile('open1\(\'(.*?)\',\'(.*?)\',\'\'\)').findall(html)for link in links:print('正在下载:'+link[0])host=link[1]r=requests.get(host,headers=self.headers)filename=link[0]with open('F:/pycharm文件/document/'+filename+'.mp4','wb')as f:f.write(r.content)

说明一下。

open1(’#向往的生活 预告:“大大彭组合”彭昱畅、王大陆、魏大勋蘑菇屋合体!’,‘https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300fc50000bk64uflhc0nbd90s2gtg&line=0’,’’)

正则表达式提取

links=re.compile('open1\(\'(.*?)\',\'(.*?)\',\'\'\)').findall(html)

4.获取多页

    def main(self):start = int(input('输入开始:'))end = int(input('输入结束页:'))for page in range(start, end + 1):print('第%s页' % page)url = self.url.format(page)html = self.get_html(url)self.parse_html(html)

效果显示

完整代码如下:

import  requests
from fake_useragent import UserAgent
import re
class douyin(object):def __init__(self):self.url='http://douyin.bm8.com.cn/d_{}.html'ua = UserAgent(verify_ssl=False)for i in range(1, 100):self.headers = {'User-Agent': ua.random}def get_html(self,url):response=requests.get(url,headers=self.headers)html=response.content.decode('utf-8')return htmldef parse_html(self,html):links=re.compile('open1\(\'(.*?)\',\'(.*?)\',\'\'\)').findall(html)for link in links:print('正在下载:'+link[0])host=link[1]r=requests.get(host,headers=self.headers)filename=link[0]with open('F:/pycharm文件/document/'+filename+'.mp4','wb')as f:f.write(r.content)def main(self):start = int(input('输入开始:'))end = int(input('输入结束页:'))for page in range(start, end + 1):print('第%s页' % page)url = self.url.format(page)html = self.get_html(url)self.parse_html(html)
if __name__ == '__main__':spider = douyin()spider.main()

声明:仅作为自己学习参考使用。

爬虫项目实战三:爬取抖音短视频相关推荐

  1. 用Python爬取抖音短视频实战,如此简单

    前言 抖音,是一款可以拍短视频的音乐创意短视频社交软件,该软件于2016年9月上线,是一个专注年轻人的15秒音乐短视频社区.用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品.此AP ...

  2. mitmproxy+appium爬取抖音小视频

    mitmproxy+appium爬取抖音小视频 目标 自动化爬取抖音APP小视频,随机获取用户,下载五个小视频,结果以用户ID为单位保存至video目录 环境配置 见: 视频下载 dy_mitmdum ...

  3. 资深程序员教你,用python入门的知识抓取抖音短视频,太厉害了

    抖音短视频可以说是当下最流行的自媒体平台,而python编程同样也是目前最流行的编程语言. 今天,就让一位大厂的资深程序员,用最简单的方式,使用python抓取抖音短视频. 到时候我会把所有的源代码都 ...

  4. Python爬取抖音app视频

    作者:哈库呐玛塔塔 来源:https://urlify.cn/ANzAre 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitm ...

  5. 青灯教育python免费公开课_如何使用Python爬取抖音APP视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 假 ...

  6. 使用python爬取抖音app视频(appium可以操控手机)

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  7. 教你用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  8. 使用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  9. 使用python爬取抖音app视频!谁说APP数据爬不了的!

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

最新文章

  1. 怎样查找this的指向
  2. scss支持的嵌套css规则
  3. java实验1机动车实验目的_《Java程序设计》实验指导书.doc
  4. Java常用设计模式——观察者模式
  5. android 文件上传类(可以直接被调用的)
  6. 竖流式沉淀池集水槽设计计算_竖流式沉淀池的设计
  7. Oracle及Oracle客户端、PLSQL安装的一些问题
  8. Spring Cloud 启动Eureka的Client(客户端)时,项目一启动就停止,控制台无任何报错信息
  9. If(flag) 与 if(!flag)
  10. Win10系统打不开html文件,电脑无法打开html文件
  11. word文件太大怎么压缩到最小-word压缩教程
  12. winUSB设备的开发方法
  13. MusicPlayerByService
  14. 自言自语(二)--英文无衬线体和有衬线体
  15. 电脑端使用文件微信聊天记录的本机/新机备份迁移
  16. IntelliJ IDEA商业版 -- 破解
  17. 国内外主流容灾备份厂商介绍
  18. 如何通过云终端,让一台电脑能多台使用?
  19. unity挂机游戏技术指南 安卓版
  20. Python_pygame库学习笔记(1):pygame的由来,特点以及模块简介

热门文章

  1. 【转】CAN接口电路的 EMC设计方案(工业)
  2. MindSpore Reinforcement新特性:分布式训练和蒙特卡洛树搜索
  3. 大数据风控 ——互联网消费金融的必由之路
  4. js中截取字符串前几位的两种方法slice()substring()
  5. 微软windows 7推向校园
  6. android gpt分区大小,[MTK] 如何确认各个分区起始偏移与大小
  7. 5g基站服务器需要芯片吗,关于5G,普通人不得不了解的三件事
  8. 程序员能有什么好出路?前路漫漫,望长风破浪!
  9. 各种 maven 依赖
  10. Java函数式编程教程(五):Java Steam API