亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用python爬取抖音app視頻的實例代碼

 更新時間:2020年12月01日 09:52:14   作者:福星  
這篇文章主要介紹了使用python爬取抖音app視頻的實例代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

記錄一下如何用python爬取app數(shù)據(jù),本文以爬取抖音視頻app為例。

編程工具:pycharm

app抓包工具:mitmproxy

app自動化工具:appium

運行環(huán)境:windows10

思路:

假設(shè)已經(jīng)配置好我們所需要的工具

1、使用mitmproxy對手機app抓包獲取我們想要的內(nèi)容

2、利用appium自動化測試工具,驅(qū)動app模擬人的動作(滑動、點擊等)

3、將1和2相結(jié)合達到自動化爬蟲的效果

一、mitmproxy/mitmdump抓包

確保已經(jīng)安裝好了mitmproxy,并且手機和PC處于同一個局域網(wǎng)下,同時也配置好了mitmproxy的CA證書,網(wǎng)上有很多相關(guān)的配置教程,這里我就略過了。

因為mitmproxy不支持windows系統(tǒng),所以這里用的是它的組件之一mitmdump,它是mitmproxy的命令行接口,可以利用它對接我們的Python腳本,用Python實現(xiàn)監(jiān)聽后的處理。

在配置好mitmproxy之后,在控制臺上輸入mitmdump并在手機上打開抖音app,mitmdump會呈現(xiàn)手機上的所有請求,如下圖

可以在抖音app一直往下滑,看mitmdump所展示的請求,會發(fā)現(xiàn)前綴分別為

http://v1-dy.ixigua.com/http://v3-dy.ixigua.com/;http://v9-dy.ixigua.com/

這3個類型前綴的url正是我們的目標(biāo)抖音視頻url。

那接下來就要編寫python腳本將視頻下載下來,需要使用 mitmdump -s scripts.py(此處為python文件名)來執(zhí)行腳本。

import requests
# 文件路徑
path = 'D:/video/'
num = 1788
 
 
def response(flow):
 global num
 # 經(jīng)測試發(fā)現(xiàn)視頻url前綴主要是3個
 target_urls = ['http://v1-dy.ixigua.com/', 'http://v9-dy.ixigua.com/',
     'http://v3-dy.ixigua.com/']
 for url in target_urls:
  # 過濾掉不需要的url
  if flow.request.url.startswith(url):
   # 設(shè)置視頻名
   filename = path + str(num) + '.mp4'
   # 使用request獲取視頻url的內(nèi)容
   # stream=True作用是推遲下載響應(yīng)體直到訪問Response.content屬性
   res = requests.get(flow.request.url, stream=True)
   # 將視頻寫入文件夾
   with open(filename, 'ab') as f:
    f.write(res.content)
    f.flush()
    print(filename + '下載完成')
   num += 1

代碼寫得比較粗糙,不過基本的邏輯還是比較清晰的,這樣我們就可以把抖音的視頻下載下來,不過這個方法有個缺陷,就是獲取視頻需要人來不斷地滑動抖音的下一個視頻,這時候我們可以用一個強大的appium自動化測試工具來解決。

二、Appium對手機進行模擬操作

確保已經(jīng)配置好appium所依賴的環(huán)境Android和SDK,網(wǎng)上也有許多教程,這里我就不說了。

appium的用法很簡單,首先我們先打開appium,啟動界面如下

點擊Start Server按鈕即可啟動appium服務(wù)

將Android手機通過數(shù)據(jù)線與PC相連,同時打開USB調(diào)試功能,可以輸入adb命令(具體可以去網(wǎng)上查找)測試連接情況,若出現(xiàn)以下結(jié)果,則說明連接成功

model是設(shè)備名,后面配置需要用到。之后點擊下圖箭頭所指的按鈕就會出現(xiàn)一個配置頁面

在右下角的JSON Representation配置啟動app的Desired Capabilities參數(shù),分別是paltformName、deviceName、appPackage、appActivity。

platformName:平臺名稱,一般是Android或iOS.

deviceName:設(shè)備名稱,手機的具體類型

appPackage:App程序包名

appActivity:入口Activity名,通常以.開頭

platformName和deviceName比較容易獲得,而appPackage和appActivity這兩個可以通過以下方法獲取到。

在控制臺上輸入   adb logcat>D:\log.log  命令,并且在手機打開抖音app,然后在D盤中打開log.log文件,查找Displayed關(guān)鍵字

由上圖可以知道Displayed后面的 com.ss.android.ugc.aweme對應(yīng)的是appPackage,.main.MainActivity對應(yīng)的是appActivity,最后我們的配置結(jié)果如下:

{
 "platformName": "Android",
 "deviceName": "Mi_Note_3",
 "appPackage": "com.ss.android.ugc.aweme",
 "appActivity": ".main.MainActivity"
}

再點擊Start Session即可啟動Android手機上的抖音app并進入到啟動頁面,同時PC上會彈出一個調(diào)試窗口,從這個窗口可以預(yù)覽當(dāng)前手機頁面,還可以對手機模擬各種操作,在本文不是重點,所以略過。

在下面我們將使用python腳本來驅(qū)動app,直接在pycharm運行即可

from appium import webdriver
from time import sleep
 
 
class Action():
 def __init__(self):
  # 初始化配置,設(shè)置Desired Capabilities參數(shù)
  self.desired_caps = {
   "platformName": "Android",
   "deviceName": "Mi_Note_3",
   "appPackage": "com.ss.android.ugc.aweme",
   "appActivity": ".main.MainActivity"
  }
  # 指定Appium Server
  self.server = 'http://localhost:4723/wd/hub'
  # 新建一個Session
  self.driver = webdriver.Remote(self.server, self.desired_caps)
  # 設(shè)置滑動初始坐標(biāo)和滑動距離
  self.start_x = 500
  self.start_y = 1500
  self.distance = 1300
 
 def comments(self):
  sleep(2)
  # app開啟之后點擊一次屏幕,確保頁面的展示
  self.driver.tap([(500, 1200)], 500)
 
 def scroll(self):
  # 無限滑動
  while True:
   # 模擬滑動
   self.driver.swipe(self.start_x, self.start_y, self.start_x, 
        self.start_y-self.distance)
   # 設(shè)置延時等待
   sleep(2)
 
 def main(self):
  self.comments()
  self.scroll()
 
 
if __name__ == '__main__':
 
 action = Action()
 action.main()

下面是爬蟲的過程。ps:偶爾會爬取到重復(fù)的視頻

到此這篇關(guān)于使用python爬取抖音app視頻的文章就介紹到這了,更多相關(guān)python爬取抖音app視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)計算圓周率π的值到任意位的方法示例

    Python實現(xiàn)計算圓周率π的值到任意位的方法示例

    這篇文章主要介紹了Python實現(xiàn)計算圓周率π的值到任意位的方法,簡單分析了圓周率的計算原理,并結(jié)合實例形式分析了Python計算圓周率的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Pyhacker實現(xiàn)端口掃描器

    Pyhacker實現(xiàn)端口掃描器

    這篇文章主要為大家介紹了Pyhacker實現(xiàn)端口掃描器的過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程

    Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程

    smtplib模塊一般我們比較熟悉、這里我們會來講解使用smtplib發(fā)送SSL/TLS安全郵件的方法,而poplib模塊則負(fù)責(zé)處理接收pop3協(xié)議的郵件,下面我們就來看Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程
    2016-07-07
  • 淺析Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請求

    淺析Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請求

    這篇文章主要介紹了Django 接收所有文件,前端展示文件(包括視頻,文件,圖片)ajax請求,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2020-03-03
  • 簡要講解Python編程中線程的創(chuàng)建與鎖的使用

    簡要講解Python編程中線程的創(chuàng)建與鎖的使用

    這篇文章主要介紹了簡要講解Python編程中線程的創(chuàng)建與鎖的使用,Python中雖然有GIL的存在,但依然是能夠創(chuàng)建多個線程來交替使用的,需要的朋友可以參考下
    2016-02-02
  • python安裝mysql的依賴包mysql-python操作

    python安裝mysql的依賴包mysql-python操作

    這篇文章主要介紹了python安裝mysql的依賴包mysql-python操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • python 抓取知乎指定回答下視頻的方法

    python 抓取知乎指定回答下視頻的方法

    這篇文章主要介紹了python 抓取知乎指定回答下視頻的方法,文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python 制作手機歸屬地查詢工具(附源碼)

    python 制作手機歸屬地查詢工具(附源碼)

    這篇文章主要介紹了python 制作手機歸屬地查詢工具,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python實現(xiàn)自定義Jupyter魔法命令

    Python實現(xiàn)自定義Jupyter魔法命令

    相信大家都用過?jupyter,也用過里面的魔法命令,這些魔法命令都以%或者%%開頭。用法還是比較簡單的,但是我們能不能自定義魔法命令呢?本文就來教大家如何自定義Jupyter魔法命令
    2022-08-08
  • Python中用表格格式打印列表的兩種實現(xiàn)

    Python中用表格格式打印列表的兩種實現(xiàn)

    本文將詳細(xì)介紹如何在 Python 中以表格格式打印列表,以便更好地展示和呈現(xiàn)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評論