爬取抖音数据实践方案《基础版》

背景:

现在移动短视频大火,很多的内容消费都在手机的客户端上进行。为了监控类似抖音短视频平台上的风险数据(主要是视频标题、视频内容、评论区),采用爬虫技术手段来实时爬取内容。

 

技术方案:

python(脚本程序)+mitmproxy(代理服务器)+appium(自动化工具)

 

原理:

采用抓包的方式,通过设置代理服务器、以及设置https证书,让所有的http、https的请求和响应全部通过这个代理服务器来转发,然后利用脚本对转发的数据进行处理。

 

和fiddler、Charles等抓包工具对比,mitmproxy最大的优势是它提供了python脚本的对接入口,可以利用python来处理爬取到的数据。例如:下载视频文件,存储关键信息到我们自己的DB上等。

爬取抖音数据实践方案《基础版》_第1张图片

 

 

实现爬取抖音视频及标题数据

 

第一步:安装环境及工具

 

安装python环境

www.python.org/downloads/

 

安装mitmproxy代理工具

mitmproxy.org/

 

安装appium自动化工具(目前没用到)

 

第二步:设置代理相关

(为支持https请求需安装证书)

 

1.安装完mitmproxy后,会在如下目录生成证书文件。

爬取抖音数据实践方案《基础版》_第2张图片

2.安装mitmproxy的pc证书

双击mitmproxy-ca.p12证书进行安装,弹出如下窗口:

爬取抖音数据实践方案《基础版》_第3张图片

点击下一步,如下:

爬取抖音数据实践方案《基础版》_第4张图片

点击下一步,如下:

爬取抖音数据实践方案《基础版》_第5张图片

点击下一步,如下:(注意这里密码默认为空)

爬取抖音数据实践方案《基础版》_第6张图片

点击下一步,如下。再点击完成即可。

爬取抖音数据实践方案《基础版》_第7张图片

 

3.安装mitmproxy的手机客户端证书

 

把上图中mitmproxy-ca-cert.pem文件导入手机随便一个位置,接着找到手机的设置入口,根据各自手机的情况,反正就是找到并安装上这个证书即可。(这里不细述,苹果手机需信任之类的操作)

 

4.设置手机代理,把手机请求指向本地电脑的mitmproxy代理。

cmd-->ipconfig-->IPv4地址

爬取抖音数据实践方案《基础版》_第8张图片

设置手机

爬取抖音数据实践方案《基础版》_第9张图片

 

第三步:启动代理,爬取数据

 

编写python爬取抖音内容脚本douyin.py,存放在site-packages目录下:

 

 

 

#douyin.py
import json,os
import requests
def response(flow):
    #分析数据发现这是抖音旧的视频请求地址(估计是防爬取定时换的吧)
    #url='https://api.amemv.com/aweme/v1/aweme/post/'
    url='https://api-hl.amemv.com/aweme/v1/aweme/post/'
    #筛选出以上面url为开头的url
    if flow.request.url.startswith(url):
        text=flow.response.text
        #将已编码的json字符串解码为python对象
        data=json.loads(text)
        #print(data)
        #在charles中刚刚看到每一个视频的所有信息
        #都在aweme_list中
        video_url=data['aweme_list']
        path='D:/crawler_data/douyin'
		#path='D:\crawler_data\douyin'
        if not os.path.exists(path):
            os.mkdir(path)
        for each in video_url:
            #视频描述
            desc=each['desc']
            url=each['video']['play_addr']['url_list'][0]
            # print(desc,url)
            filename=path+'/'+desc+'.mp4'
            # print(filename)
            req=requests.get(url=url,verify=False)
            with open(filename,'ab') as f:
                f.write(req.content)
                f.flush()
                print(filename,'下载完毕')复制代码

 

以加载python的方式启动mitmproxy代理:

(需先cd到site-packages目录,然后执行如下命令)

mitmdump -s douyin.py复制代码

 

需要注意:

1)douyin.py存放在python的安裝目录下,不然会报requests模块找不到。

爬取抖音数据实践方案《基础版》_第10张图片

第四步:手工滑动抖音,实时查看抖音视频数据。

(后面可借助appium自动化工具模拟滑动动作)

 

根据抓包,分析抖音数据结构:

爬取抖音数据实践方案《基础版》_第11张图片

mitmdump上实时打印的抓包数据:

爬取抖音数据实践方案《基础版》_第12张图片

实时下载的抖音视频:

爬取抖音数据实践方案《基础版》_第13张图片

 

展望及不足:

1)python脚本比较简陋,现在还不支持数据过滤及入库。

2)只是简单的技术验证,如上面提到的,抖音的视频地址可能会变,到时就需要维护成本。

3)如需落地监控,需训练视频内容、邮件通知、视频查阅(可通过定时上传百度云实现视频播放)等。

 

相关参考资料:

mitmproxy 使用指南:

foofish.net/mitmproxy-t…

 

使用 mitmproxy + python 做拦截代理:(详尽)

blog.wolfogre.com/posts/usage…

 

python下载安装:(3.6以上)

www.python.org/downloads/

 

安装mitmproxy以及遇到的坑和简单用法:

www.jianshu.com/p/af381ef13…

 

mitmproxy的安装教程

zhuanlan.zhihu.com/p/33747453

 

mitmproxy下载界面:

github.com/mitmproxy/m…

mitmproxy下载界面:(推荐)

mitmproxy.org/

 

使用python爬取抖音app视频:

blog.csdn.net/weixin_4171…

 

靠谱的Pycharm安装详细教程:

www.cnblogs.com/dcpeng/p/90…

 

appium下载界面:

github.com/appium/appi…

 

Charles的安装及使用过程:(代理服务器)

www.cnblogs.com/littlek1d/p…

 

Charles和mitmproxy代理设置

www.cnblogs.com/knighterran…

 

mitmproxy的下载及证书配置(简书)

www.jianshu.com/p/036e5057f…

 

Pycharm No module named requests 的解决方法:

blog.csdn.net/u010475354/…

 

linux下载抖音模块:

juejin.im/post/5be136…

 

win10 python爬取数据:(推荐)

zhuanlan.zhihu.com/p/41492085

 

破解版Charles的安装:

blog.csdn.net/weixin_4284…

 

你可能感兴趣的:(爬虫,python,python)