爬虫项目实战三:爬取抖音短视频
爬取抖音网页版短视频
- 目标
- 项目准备
- 网站分析
- 反爬分析
- 每一页的链接分析
- 代码实现
- 效果显示
目标
爬取抖音短视频,批量下载到本地。
项目准备
软件: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()
声明:仅作为自己学习参考使用。
爬虫项目实战三:爬取抖音短视频相关推荐
- 用Python爬取抖音短视频实战,如此简单
前言 抖音,是一款可以拍短视频的音乐创意短视频社交软件,该软件于2016年9月上线,是一个专注年轻人的15秒音乐短视频社区.用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品.此AP ...
- mitmproxy+appium爬取抖音小视频
mitmproxy+appium爬取抖音小视频 目标 自动化爬取抖音APP小视频,随机获取用户,下载五个小视频,结果以用户ID为单位保存至video目录 环境配置 见: 视频下载 dy_mitmdum ...
- 资深程序员教你,用python入门的知识抓取抖音短视频,太厉害了
抖音短视频可以说是当下最流行的自媒体平台,而python编程同样也是目前最流行的编程语言. 今天,就让一位大厂的资深程序员,用最简单的方式,使用python抓取抖音短视频. 到时候我会把所有的源代码都 ...
- Python爬取抖音app视频
作者:哈库呐玛塔塔 来源:https://urlify.cn/ANzAre 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitm ...
- 青灯教育python免费公开课_如何使用Python爬取抖音APP视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 假 ...
- 使用python爬取抖音app视频(appium可以操控手机)
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- 教你用python爬取抖音app视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- 使用python爬取抖音app视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- 使用python爬取抖音app视频!谁说APP数据爬不了的!
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
最新文章
- 怎样查找this的指向
- scss支持的嵌套css规则
- java实验1机动车实验目的_《Java程序设计》实验指导书.doc
- Java常用设计模式——观察者模式
- android 文件上传类(可以直接被调用的)
- 竖流式沉淀池集水槽设计计算_竖流式沉淀池的设计
- Oracle及Oracle客户端、PLSQL安装的一些问题
- Spring Cloud 启动Eureka的Client(客户端)时,项目一启动就停止,控制台无任何报错信息
- If(flag) 与 if(!flag)
- Win10系统打不开html文件,电脑无法打开html文件
- word文件太大怎么压缩到最小-word压缩教程
- winUSB设备的开发方法
- MusicPlayerByService
- 自言自语(二)--英文无衬线体和有衬线体
- 电脑端使用文件微信聊天记录的本机/新机备份迁移
- IntelliJ IDEA商业版 -- 破解
- 国内外主流容灾备份厂商介绍
- 如何通过云终端,让一台电脑能多台使用?
- unity挂机游戏技术指南 安卓版
- Python_pygame库学习笔记(1):pygame的由来,特点以及模块简介
热门文章
- 【转】CAN接口电路的 EMC设计方案(工业)
- MindSpore Reinforcement新特性:分布式训练和蒙特卡洛树搜索
- 大数据风控 ——互联网消费金融的必由之路
- js中截取字符串前几位的两种方法slice()substring()
- 微软windows 7推向校园
- android gpt分区大小,[MTK] 如何确认各个分区起始偏移与大小
- 5g基站服务器需要芯片吗,关于5G,普通人不得不了解的三件事
- 程序员能有什么好出路?前路漫漫,望长风破浪!
- 各种 maven 依赖
- Java函数式编程教程(五):Java Steam API