所用到的模块和库 :  python3+reqeuests+Airtest+fiddler

Airtest  : (app自动化软,类似Appium,网易家的本人很喜欢)

1.首先环境的配置 Fiddler 和Airtest

  fiddler可以设定抓取包的链接,并自动保存到设定的txt文件中

  #在配置好手机证书,以及可以抓到手机包的情况下,再看下面步骤----配置fiddler环境:https://jingyan.baidu.com/article/1876c8524581d9890b1376a5.html

                               手机抓包证书教程:https://www.jianshu.com/p/724097741bdf

  弄好之后,打开抖音,可以看到一堆抖音的包的话,就说明可以了,

  接着来下面操作,设置抓包规则并自动保存       由于截图不好截,就手机拍了= =图片不好勿打

  

  打开后按ctrl+f 搜素    OnBeforeRequest  找到这个方法

  将下面代码插入fiddler OnBeforeRequest  方法中

//保存到本地添加开始//这是抖音的地址  设定视频包的链接名if (oSession.fullUrl.Contains("v1-dy.bytecdn.cn")||oSession.fullUrl.Contains("v3-dy-y.bytecdn.cn")||oSession.fullUrl.Contains("v3-dy.z.bytecdn.cn")||oSession.fullUrl.Contains("v5-dy.bytecdn.cn")||oSession.fullUrl.Contains("v6-dy.bytecdn.cn") ||oSession.fullUrl.Contains("v9-dy-z.bytecdn.cn") ||oSession.fullUrl.Contains("v9-dy.bytecdn.cn")){var fso;var file;fso = new ActiveXObject("Scripting.FileSystemObject");//文件保存路径,可自定义  自动保存的txt文档地址file = fso.OpenTextFile("E:\\url_bt\\douyin.txt",8,true);//file.writeLine("Request-url:" + oSession.url);file.writeLine("http://"+oSession.url)//file.writeLine("Request-host:" + oSession.host);//file.writeLine("Request-header:" + "\n" + oSession.oRequest.headers);//file.writeLine("Request-body:" + oSession.GetRequestBodyAsString());//file.writeLine("\n");file.close();}        //保存到本地添加结束

  将上面的代码插入后打开抖音刷一刷,然后去自动保存的地址查询是否有相应的txt文档,如果没有,查看fiddler对应视频包名是否有修改

  效果---这些链接可以在浏览器打开,但是可能看不到视频,那是浏览器不支持,这个无影响,

  !!!这些地址是有有效期的。。目测是大概1-2小时吧

  

   那么问题来了。。如何自动模拟人的滑动来获取到这些链接----华丽丽的Airtest登场(没有接触过手机自动化软件的可以先去入门了,入门后再回来查看,有appium的童鞋可以接着看)

  Airetest 基本操作教程:https://segmentfault.com/a/1190000017982620?utm_source=tag-newest

  Airtest是支持python代码操作的, 需要对应的库  :pocoui        pip install pocoui

  安装好之后,写入自动滑动抖音的视频来截取链接-----当然可以截取  推荐,同城,搜索,榜单的一些视频包,只需要打开相应的视频界面滑动

  以下是我写的自动上滑,拉动视频的代码--如果不适用,建议在Airtest上自己写好copy到python代码中就欧克

  

__author__ = "xiaojun"from airtest.core.api import *auto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
#模拟滑动
def douyin_spwipe():#无限循环向上滑动while True:#坐标,以及速度poco.swipe([0.5,0.8],[0.5,0.3],duration=0.2)sleep(3)

    那么有了视频的链接。。。剩下的就是写一个python代码获取这些链接并请求写入mp4视频文件中了

    !!!注意视频链接是有  有效期的 大概1-2小时吧,所以建议是,一边滑动获取链接,一边写入生成链接

     下面是python获取链接,和写入mp4的代码。。。如有不合适,请自行修改调试代码

     获取和生成两个方法可以 同时进行, 多线程,多个文件,多个进程随意   生成视频后清空txt文件,休眠十几分钟让滑动程序,继续截图视频包链接

import os
import requests
import sysimport time
from fake_useragent import UserAgentheaders = {'User-Agent':UserAgent().chrome
}
#去重
def distinct_data():datalist_blank = []with open(r'E:\url_bt\douyin.txt','r') as f:#读取所有行,生成列表f_data_list = f.readlines()print(f_data_list)for url in f_data_list:if len(url)>40:datalist_blank.append(url.strip()) #去掉\n strip去掉头尾默认空格或换行符# print(url.strip())
f.close()# print(len(datalist_blank), datalist_blank)# print(len(set(datalist_blank)), set(datalist_blank))#去重后的列表urldatalist_blank= list(set(datalist_blank))return datalist_blank#写入文件夹
def responsedouyin():#获得种子链接data_url=distinct_data()#统计文件夹中视频数量DIR = r'E:\url_bt\douyin_mp4'  # 要统计的文件夹num = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])+1print(num)#文件夹现文件数量for url in data_url:# stream=True作用是推迟下载响应体直到访问Response.content属性# res = requests.get(url,stream=True,headers=headers)res = requests.get(url=url, stream=True, headers=headers)
#         #定义视频存放的路径pathinfo = r'E:\url_bt\douyin_mp4\%d.mp4'%num  #%d 用于整数输出   %s用于字符串输出# 实现下载进度条显示,这一步需要得到总视频大小total_size = int(res.headers['Content-Length'])print('这是视频的总大小:',total_size)#设置流的起始值为0temp_size = 0if res.status_code == 200:# 将视频写入文件夹with open(pathinfo, 'wb') as file:file.write(res.content)print(pathinfo + '下载完成啦啦啦啦啦')num += 1with open(r'E:\url_bt\douyin.txt', 'w') as f:f.write('')f.close()time.sleep(700)

  

  如果有优化,以及更好的方案可以随时联系我,   以上均为原创所写,转载请标明出处!

转载于:https://www.cnblogs.com/HugJun/p/11125745.html

python爬虫抖某音爬取视频 Airtest+fiddler相关推荐

  1. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

  2. python爬虫对炒股有没有用_使用python爬虫实现网络股票信息爬取的demo

    实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...

  3. python爬虫 豆瓣影评的爬取cookies实现自动登录账号

    python爬虫 豆瓣影评的爬取cookies实现自动登录账号 频繁的登录网页会让豆瓣锁定你的账号-- 网页请求 使用cookies来实现的自动登录账号,这里的cookies因为涉及到账号我屏蔽了,具 ...

  4. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  5. 《python爬虫实战》:爬取贴吧上的帖子

    <python爬虫实战>:爬取贴吧上的帖子 经过前面两篇例子的练习,自己也对爬虫有了一定的经验. 由于目前还没有利用BeautifulSoup库,因此关于爬虫的难点还是正则表达式的书写. ...

  6. Python 爬虫 中国行政区划信息爬取 (初学者)

    Python 爬虫 中国行政区划信息爬取 (初学者) 背景 环境准备 代码片段 1.定义地址信息对象 2.地址解析对象 2.1 获取web信息 2.2 web信息解析 2.3 区划信息提取 2.4 省 ...

  7. python爬虫学习 之 定向爬取 淘宝商品价格

    python爬虫学习 之 定向爬取 淘宝商品价格 import requests import redef getHTMLText(url):try:r = requests.get(url, tim ...

  8. python爬虫股票市盈率_使用python爬虫实现网络股票信息爬取的demo

    实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...

  9. python爬虫实战之多线程爬取前程无忧简历

    python爬虫实战之多线程爬取前程无忧简历 import requests import re import threading import time from queue import Queu ...

最新文章

  1. Jvm 系列(二):Jvm 内存结构
  2. 中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具Jenkins...
  3. 基于间隔推送全量更新数据状态的设计方法
  4. pcre-7.9编译安装出错[pcrecpp.lo] Error 1
  5. ES5_03_Object扩展
  6. java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...
  7. windows dos 命令
  8. RHCSA与RHCE红帽认证考试心得
  9. STM32F4 + HAL库 + W25Q256的验证
  10. javaweb开发后端常用技术_java web后端开发技术
  11. C语言12之什么是字符串类型?
  12. java集合根据条件筛选数据
  13. 测试开发工作者日记:2020.67-6.9
  14. 微信开发者平台应用创建
  15. gitlab代码查看行数
  16. 冒泡排序保姆级心得分享
  17. ZOJ 3736 模拟魔方
  18. 计算机类中级职称论文,计算机中级职称论文.docx
  19. Quicker用谷歌浏览器打开网址链接
  20. 很多人认为创业公司很难成功,这是一个事实

热门文章

  1. Requirejs定义模块
  2. 阿里云中间件技术 促进互联网高速发展
  3. 手动脱Mole Box壳实战总结
  4. 只需几步,U盘就能变“光驱”
  5. CentOs7中安装sonarQube服务系列------3.安装SonarQube服务器
  6. java程序在eclipse上运行和导出文件运行结果不同
  7. 每天数十亿次请求的应用经验分享,值得参考!
  8. Mybatis 使用的 9 种设计模式,真是太有用了~
  9. 从 npm 迁移至yarn
  10. FetchType.LAZY和FetchType.EAGER什么区别?(懒加载和急加载的理解)