干货教程:如何采集抖音的数据,视频数据采集教程

优采云 发布时间: 2022-11-25 10:28

  干货教程:如何采集抖音的数据,视频数据采集教程

  我们模拟App的运行如下:

  1.启动抖音。

  2. 单击搜索按钮。

  3. 输入搜索关键词(抖音用户ID),点击搜索。

  4. 找到匹配的用户,点击关注。

  5、点击系统推荐“View More”,模拟多次向上滑动屏幕直至数据加载完成(屏幕显示“No more for now”)。

  同时,我们使用抓包脚本(可以使用Fiddler的Customize Rules或者Mitmproxy)抓包过滤URL中收录

/user/recommend/的HTTP响应数据,从中提取系统推荐的用户信息JSON数据(如下图)。

  模拟抖音App的脚本核心代码如下:

  抖音App和服务端交互使用的是HTTPS协议,使用Fiddler很容易可以捕获到数据,如下图所示。

不过想要自己模拟一个有效的请求可不是那么容易了,因为它使用了签名机制,在所有请求中都有as和cp两个签名参数,除非得知签名算法否则我们无法构造出有效的请求。

这里我们使用模拟操作抖音App的方式,让App帮我们发出有效的请求,然后我们拦截服务器的HTTP应答数据,再从中提取我们感兴趣的信息。

下面结合一个实际的案例介绍下整个过程,根据客户的需求,要采集一些指定用户加关后的系统推荐“你可能感兴趣”的数据(如下图所示)用于商品营销。

点击“查看更多”可以看到更多的系统推荐用户列表数据,如下图所示。

我们按如下步骤模拟操作App:

1.启动抖音。

2.点击搜索按钮。

3.输入搜索关键词(抖音用户ID),点击搜索。

4.找到匹配的用户,点击关注。

5.点击系统推荐“查看更多”,模拟多次向上滑动屏幕,直至数据加载完毕(屏幕出现“暂时没有更多了”)。

于此同时,我们使用抓包脚本(可以使用Fiddler的Customize Rules,也可以使用Mitmproxy),捕获并过滤URL中含有/user/recommend/的HTTP应答数据,从JSON数据中提取系统推荐的用户信息(如下图所示)。

模拟操作抖音App的脚本核心代码如下所示:

view plaincopy to clipboardprint?

from com.dtmilano.android.viewclient import ViewClient  

  

def search_douyin_for_recommend_user(douyin_id):  

     """采集指定抖音账号的关注推荐数据 

     """  

     log(u'准备采集"{}"对应的关注推荐数据'.format(douyin_id))  

     # 连设备  

     serialno = None  

     if serialno:  

          os.system('adb connect {}'.format(serialno or ''))  

          time.sleep(3)  

                  

     device, serialno = ViewClient.connectToDeviceOrExit(serialno=serialno)  

     vc = ViewClient(device, serialno, autodump=False)  

       

     # 强制关闭抖音  

     log(u'强制关闭抖音.')  

<p>

" />

     device.shell(&#39;am force-stop com.ss.android.ugc.aweme&#39;)  

     time.sleep(2)  

       

     # 启动抖音  

     log(u&#39;启动抖音.&#39;)  

     device.shell(&#39;am start -n com.ss.android.ugc.aweme/.main.MainActivity&#39;)  

     time.sleep(5)  

     # 暂停视频播放  

     log(u&#39;点击屏幕,暂停视频播放.&#39;)  

     device.touch(514, 1048)  

       

     # 点击搜索按钮  

     vc.dump()  

     search_btn = vc.findViewById(&#39;com.ss.android.ugc.aweme:id/amj&#39;)  

     if search_btn:  

          log(u&#39;点击搜索按钮,跳转到搜索页面.&#39;)  

          search_btn.touch()  

       

          vc.dump()  

          # 点击搜索输入框  

          search_input = vc.findViewById(&#39;com.ss.android.ugc.aweme:id/ad_&#39;)  

          if search_input:  

               log(u&#39;点击搜索框,准备输入关键词.&#39;)  

               search_input.touch()  

                 

               # 输入抖音ID  

               log(u&#39;输入搜索关键词: {}.&#39;.format(douyin_id))  

               device.type(douyin_id.encode(&#39;UTF-8&#39;))  

                 

               # 点击搜索按钮  

               search_btn = vc.findViewById(&#39;com.ss.android.ugc.aweme:id/cp8&#39;)  

               if search_btn:  

                    log(u&#39;提交搜索.&#39;)  

                    search_btn.touch()  

                    time.sleep(2)  

                    vc.dump()  

                      

                    ## 切换到用户  

                    #user_tab = vc.findViewWithText(u&#39;用户&#39;)  

                    #user_tab.touch()  

                      

                    # 找到匹配的  

                    matches = []  

                    def find_matches(view):  

                         if view.getClass() == &#39;android.widget.TextView&#39;:  

                              text = view.getText()  

                              if douyin_id.lower() in text.lower():  

                                   # 找到匹配的了  

                                   log(u&#39;找到匹配的: {}&#39;.format(text))  

                                   matches.append(view)  

                              else:  

                                   #print text  

                                   pass  

                    vc.traverse(transform=lambda view: find_matches(view))  

                    if matches:  

                         # 有没有已关注按钮  

                         btn = vc.findViewWithText(u&#39;已关注&#39;)  

                         if btn:  

                              # 先取消关注  

                              log(u&#39;之前关注过,先取消关注.&#39;)  

                              btn.touch()  

                              time.sleep(1)  

  

" />

                         user_matched = matches[0]  

                         log(u&#39;点击进入个人主页.&#39;)  

                         user_matched.touch()  

                         time.sleep(1)  

                           

                         # 点关注  

                         vc.dump()  

                         follow_btn = vc.findViewById(&#39;com.ss.android.ugc.aweme:id/aei&#39;)  

                         if follow_btn:  

                              # 点击关注  

                              log(u&#39;点击关注&#39;)  

                              follow_btn.touch()  

                              time.sleep(1)  

                              # 点击查看更多  

                              vc.dump()  

                              viewmore_btn = vc.findViewById(&#39;com.ss.android.ugc.aweme:id/bqn&#39;)  

                              if viewmore_btn:  

                                   # 点击查看更多  

                                   log(u&#39;点击查看更多系统推荐&#39;)  

                                   viewmore_btn.touch()  

                                   time.sleep(1)  

                                   i = 0  

                                   while True:  

                                        # 上滑动  

                                        device.drag((345, 1762), (345, 550), duration=100)  

                                        log(u&#39;上滑以加载更多&#39;)  

                                        i += 1  

                                        if i % 5 == 0:  

                                             # 拖动10次判断一下是否还有更多  

                                             vc.dump()  

                                             if vc.findViewWithText(u&#39;暂时没有更多了&#39;):  

                                                  log(u&#39;暂时没有更多了, "{}"的关注推荐数据采集完毕.&#39;.format(douyin_id))  

                                                  # 采集成功了  

                                                  return True  

                                             failed_tip = vc.findViewWithText(u&#39;加载失败,点击重试&#39;)  

                                             if failed_tip:  

                                                  log(u&#39;加载失败,点击重试.&#39;)  

                                                  failed_tip.touch()  

                              else:  

                                   # 没有找到查看更多按钮  

                                   log(u&#39;没有找到查看更多按钮&#39;)  

                         else:  

                              # 没有找到加关注按钮  

                              log(u&#39;没有找到加关注按钮&#39;)  

                    else:  

                         # 没有找到匹配的用户  

                         log(u&#39;没有找到匹配的用户&#39;)  

               else:  

                   # 没有找到搜索提交按钮  

                    log(u&#39;没有找到搜索提交按钮.&#39;)  

          else:  

               # 没有找到搜索输入框  

               log(u&#39;没有找到搜索输入框.&#39;)  

     else:  

          # 没有找到搜索按钮  

          log(u&#39;没有找到搜索按钮.&#39;)</p>

  运行上述脚本的截图如下:

  最后,附上一些捕获的示例数据:

  更多抖音、快手、小红书实时数据采集接口请查看文档:TiToData

  免责声明:本文档仅供学习参考,请勿用于非法用途!否则,一切后果由您自行承担。

  汇总:自动语音识别的数据是怎么收集的?

  Siri、小度、小爱等自动语音识别系统和虚拟助手已经成为我们生活中常见的一部分。随着它们变得越来越聪明,我们对它们的依赖也在急剧增加。从开灯到打电话再到更换电视频道,我们使用这些智能技术来完成日常任务。

  但是,您有没有想过这些语音识别系统是如何工作的?

  好吧,本文将教您一些自动语音识别的基础知识。此外,我们还将探讨它的工作原理,以及如何构建像 Siri 这样功能强大的虚拟助手。

  什么是自动语音识别?

  自动语音识别 (ASR) 是使计算机系统能够使用各种人工智能和机器学习算法将人类语音转换为文本的软件。

  转换和分析:人类发出命令后,计算机以用户的适当输出作为响应。

  ASR 于 1962 年首次推出,此后不断改进其运营,并因 Alexa 和 Siri 等流行应用程序而备受关注。

  您知道自动语音识别也称为语音转文本阅读器吗?在本文中阅读更多相关信息!

  训练ASR模型的语音采集过程是怎样的?

  语音采集过程

  

" />

  Speech 采集

旨在从多个区域采集

多个样本录音,用于 ASR 模型的输入和训练。ASR 系统在采集

大型语音和音频数据集并将其馈送到其系统时可以提供最高效率。

  为了无缝工作,采集

的语音数据集必须收录

所有目标人口统计数据、语言、口音和方言。以下过程展示了如何分多个步骤训练机器学习模型:

  从构建人口矩阵开始

  最主要的是采集

不同人口统计数据,例如位置、性别、语言、年龄和口音。此外,确保捕捉各种环境噪音,如街道噪音、候车室噪音、公共办公室噪音等。

  采集

和转录语音数据

  下一步是采集

基于不同地理位置的人类音频和语音样本来训练您的 ASR 模型。这是一个重要的步骤,需要人类专家通过长短的话语来获得对句子的真实感受,并用不同的口音和方言重复相同的句子。

  创建一个单独的测试集

  采集

完转录本后,下一步就是将它们与相应的音频数据配对。然后,进一步分解数据并收录

其中的语句。您现在可以从分段数据对中提取随机数据以进行进一步测试。

  训练您的 ASR 语言模型

  您的数据集收录

的信息越多,您的 AI 训练模型的性能就越好。因此,生成您以前录制的文本和演讲的多种变体。用不同的注音符号转述同一句话。

  评估输出,最后迭代

  

" />

  最后,测量 ASR 模型的输出以修复其性能。针对测试集测试模型以确定其效率。适当地,让您的 ASR 模型参与反馈循环,以生成所需的输出并修复任何差距。

  语音识别有哪些不同的用例?

  语音识别技术在当今许多行业中无处不在。使用这项巨大技术的一些行业如下:

  食品行业 食品行业:星巴克和麦当劳等食品巨头将使用 ASR 来提升他们的客户体验。在许多门店,他们已经部署了功能齐全的 ASR 模型来接收订单,并将它们进一步传递给烹饪部门,为客户订单做好准备。

  电话沟通:中国三大电信运营商都采用ASR模型设计了客户服务和电话转接服务,指导您解决不同的咨询,并将电话转接到相关部门。

  出行出行:汽车导航或高德等导航软件已经普及。大多数人使用它们来激活导航系统、发送消息或切换音乐播放列表。然而,随着技术的进步,这些系统变得越来越复杂。BMW 3 系中引入的 BMW 智能个人助理比普通的语音助理要聪明得多。它使驾驶员能够查找与汽车相关的信息并使用语音命令操作汽车。

  媒体和娱乐:媒体行业也在许多项目中使用 ASR。可以在抖音和剪辑软件上实时自动生成字幕。当您在屏幕上讲话时,会提供字幕,使更多用户可以访问视频。

  沃峰科技如何提供帮助?

  沃峰科技是中国人工智能及营销服务解决方案提供商。依托人工智能、大数据、云计算等核心技术,打造一体化的客户生命周期解决方案。沃峰科技拥有Udesk、GaussMind、ServiceGo、微峰等完整的产品矩阵,将人工智能技术应用于营销获客、销售管理、客户服务、企业内部共享服务等各个场景,为企业提供服务消费品、制造、生命科学、汽车、央企、数字政府、金融等行业提供定制化解决方案,全面帮助企业实现数字化转型,

  闻不如闻,点击在线咨询,立即申请免费试用:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线