python爬虫抖某音爬取视频 Airtest+fiddler

所用到的模块和库 :  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 AndroidUiautomationPoco

poco = 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 sys

import time
from fake_useragent import UserAgent

headers = {
    ‘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))
    #去重后的列表url
    datalist_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))])+1
    print(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)
        #设置流的起始值为0
        temp_size = 0
        if res.status_code == 200:
            # 将视频写入文件夹
            with open(pathinfo, ‘wb‘) as file:
                file.write(res.content)
                print(pathinfo + ‘下载完成啦啦啦啦啦‘)
                num += 1

    with 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

时间: 2024-10-11 00:10:05

python爬虫抖某音爬取视频 Airtest+fiddler的相关文章

Python爬虫实战二之爬取百度贴吧帖子

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht

转 Python爬虫实战二之爬取百度贴吧帖子

静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件

Python爬虫新手教程:爬取了6574篇文章,告诉你产品经理在看什么!

作为互联网界的两个对立的物种,产品汪与程序猿似乎就像一对天生的死对头:但是在产品开发链条上紧密合作的双方,只有通力合作,才能更好地推动项目发展.那么产品经理平日里面都在看那些文章呢?我们程序猿该如何投其所好呢?我爬取了人人都是产品经理栏目下的所有文章,看看产品经理都喜欢看什么. 1. 分析背景 1.1. 为什么选择「人人都是产品经理」 人人都是产品经理是以产品经理.运营为核心的学习.交流.分享平台,集媒体.培训.招聘.社群为一体,全方位服务产品人和运营人,成立8年举办在线讲座500+期,线下分享

python爬虫--2019中国好声音评论爬取

2019中国好声音火热开播,作为一名"假粉丝",这一季每一期都刷过了,尤其刚播出的第六期开始正式的battle.视频视频看完了,那看下大家都是怎样评论的. 1.网页分析部分 本文爬取的是腾讯视频评论,第六期的评论地址是:http://coral.qq.com/4093121984每页有10条评论,点击"查看更多评论",可将新的评论加载进来,通过多次加载,可以发现我们要找的评论就在以v2开头的js类型的响应中. 请求为GET请求,地址是http://coral.qq.

Python 爬虫入门实例(爬取小米应用商店的top应用apk)

一,爬虫是什么? 爬虫就是获取网络上各种资源,数据的一种工具.具体的可以自行百度. 二,如何写简单爬虫 1,获取网页内容 可以通过 Python(3.x) 自带的 urllib,来实现网页内容的下载.实现起来很简单 import urllib.request url="http://www.baidu.com" response=urllib.request.urlopen(url) html_content=response.read() 还可以使用三方库 requests ,实现起

Python爬虫之利用正则表达式爬取内涵吧

首先,我们来看一下,爬虫前基本的知识点概括 一. match()方法: 这个方法会从字符串的开头去匹配(也可以指定开始的位置),如果在开始没有找到,立即返回None,匹配到一个结果,就不再匹配. 我们可以指定开始的位置的索引是3,范围是3-10,那么python将从第4个字符'1'开始匹配,只匹配一个结果. group()获得一个或多个分组的字符串,指定多个字符串时将以元组的形式返回,group(0)代表整个匹配的字串,不填写参数时,group()返回的是group(0). 1 import r

Python爬虫系列 - 初探:爬取旅游评论

Python爬虫目前是基于requests包,下面是该包的文档,查一些资料还是比较方便. http://docs.python-requests.org/en/master/ 爬取某旅游网站的产品评论,通过分析,获取json文件需要POST指令.简单来说: GET是将需要发送的信息直接添加在网址后面发送 POST方式是发送一个另外的内容到服务器 那么通过POST发送的内容可以大概有三种,即form.json和multipart,目前先介绍前两种 1.content in form Content

Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧

前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. stars声明很多小伙伴学习Python过程中会遇到各种烦恼问题解决不了.为此小编建了个群 624440745. 不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选

Python爬虫之简单的爬取百度贴吧数据

首先要使用的第类库有 urllib下的request  以及urllib下的parse  以及 time包  random包 之后我们定义一个名叫BaiduSpider类用来爬取信息 属性有 url:用来爬取的网址             headers:请求头 class BaiduSpider(object): def __init__(self): self.url = 'http://tieba.baidu.com/f?kw={}&pn={}' self.headers = {'User