實戰:爬取抖音app視頻

2021-02-24 小黃鴨編程社區

作者:哈庫吶瑪塔塔

來源:https://urlify.cn/ANzAre

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

編程工具:pycharm

app抓包工具:mitmproxy

app自動化工具:appium

運行環境:windows10

思路:

假設已經配置好我們所需要的工具

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

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

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

# mitmproxy/mitmdump抓包

確保已經安裝好了mitmproxy,並且手機和PC處於同一個區域網下,同時也配置好了mitmproxy的CA證書,網上有很多相關的配置教程,這裡我就略過了。

因為mitmproxy不支持windows系統,所以這裡用的是它的組件之一mitmdump,它是mitmproxy的命令行接口,可以利用它對接我們的Python腳本,用Python實現監聽後的處理。

在配置好mitmproxy之後,在控制臺上輸入mitmdump並在手機上打開抖音app,mitmdump會呈現手機上的所有請求,如下圖

     

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

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

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

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

import requests# 文件路徑path = 'D:/video/'num = 1788

def response(flow): global num # 經測試發現視頻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): # 設置視頻名 filename = path + str(num) + '.mp4' # 使用request獲取視頻url的內容 # stream=True作用是推遲下載響應體直到訪問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對手機進行模擬操作

確保已經配置好appium所依賴的環境Android和SDK,網上也有許多教程,這裡我就不說了。

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

點擊Start Server按鈕即可啟動appium服務

將Android手機通過數據線與PC相連,同時打開USE調試功能,可以輸入adb命令(具體可以去網上查找)測試連接情況,若出現以下結果,則說明連接成功

model是設備名,後面配置需要用到。之後點擊下圖箭頭所指的按鈕就會出現一個配置頁面

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

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

deviceName:設備名稱,手機的具體類型

appPackage:App程序包名

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

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

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

由上圖可以知道Displayed後面的 com.ss.android.ugc.aweme對應的是appPackage,.main.MainActivity對應的是appActivity,最後我們的配置結果如下:

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

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

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

from appium import webdriverfrom time import sleep

class Action(): def __init__(self): # 初始化配置,設置Desired Capabilities參數 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) # 設置滑動初始坐標和滑動距離 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) # 設置延時等待 sleep(2)
def main(self): self.comments() self.scroll()

if __name__ == '__main__':
action = Action() action.main()

下面是爬蟲的過程。ps:偶爾會爬取到重複的視頻


相關焦點

  • Python爬蟲---爬取抖音短視頻
    獲取視頻地址下載視頻全部代碼實現結果待解決的問題前言最近一直想要寫一個抖音爬蟲來批量下載抖音的短視頻,但是經過幾天的摸索我發現了一個很嚴重的問題.抖音實在是難爬!(這篇文章的分析比較麻煩了,但是也可以當做分析其他網頁的一個參考吧,想要爬抖音的朋友們可以看這一篇的代碼改良版抖音爬蟲)抖音爬蟲製作選定網頁想要爬取抖音上面的視頻,就要先找到可以刷小視頻的地址,於是我就開始在網上尋找網頁版的抖音。
  • 用Python爬取抖音APP無水印視頻批量下載
    看著好幾天都沒有更新的網站有些心疼,翻了翻爬蟲代碼存貨,決定把抖音APP視頻批量下載的代碼拿出來水個文章。二、實戰背景抖音越來越火,感覺它有毒,越刷越上癮,總感覺下一個視頻一定會更精彩,根本停不下來。想將抖音裡喜歡的小哥哥/小姐姐的視頻全部存到電腦硬碟裡該如何操作?不想有抖音的視頻水印該如何處理?
  • 【python爬蟲實戰】超簡單爬取抖音無水印視頻
    ,但是爬蟲思想不會變,只要學會了思想,無論怎麼變,相信你都能解決的目錄一、抖音視頻分析二、分析複製的短連結三、分析返回的數據四、下載源碼五、運行結果: 一、抖音視頻分析①.因為現在抖音app有隱藏自己收藏的功能,所以如果用戶設置了隱藏,你將無法下載用戶收藏的視頻哦④. 分析請求連結.通過抓包我們知道.用戶上傳的數據連結為:https://www.iesdouyin.com/web/api/v2/aweme/post/?
  • 不懂抓包也能做 APP 爬蟲?1 招教你用自動化爬取抖音流行歌名!
    然而,在爬蟲的實操中,APP 的各種反爬措施也是不容小覷的,比如:抓包失敗、參數加密、代碼被編譯等等,都增加了我們爬取 APP 數據的難度那麼作為一名不懂抓包的小白,是不是就無緣爬蟲了呢?不要慌,今天我們就帶大家 用 airtest 來實現 1 個模擬抓取的過程 ,把網易雲音樂中抖音排行榜的 100 首歌曲名稱爬取下來!
  • 用python爬蟲爬取圖片實戰
    爬取糗事百科用戶的頭像圖片#爬取圖片的關鍵:構建頭像的正則表達式# pattern
  • Python爬取抖音短視頻(無水印版)
    點擊上方 "Python人工智慧技術" 關注,星標或者置頂編輯:樂樂 | 來自:cnblogs.com/cherish-hao
  • 推薦18個Python爬蟲實戰案例
    目錄爬蟲小工具爬蟲實戰筆趣看小說下載VIP視頻下載百度文庫文章下載_rev1百度文庫文章下載_rev2《帥啊》網帥哥圖片下載構建代理IP池《火影忍者》漫畫下載財務報表下載小助手一小時入門網絡爬蟲抖音App視頻下載_rev1
  • Django實戰: 在線無水印下載抖音視頻(附源碼分析及地址)
    分享個由讀者陳仕洋同學利用Django開發的在線無水印下載抖音視頻項目。
  • 18個Python爬蟲實戰案例(已開源)
    《火影忍者》漫畫下載財務報表下載小助手一小時入門網絡爬蟲抖音App視頻下載_rev1抖音App視頻下載_rev2抖音App視頻下載_rev3GEETEST驗證碼破解12306搶票小助手百萬英雄答題輔助系統網易雲音樂批量下載B站視頻和彈幕批量下載
  • pyspider 實戰項目之爬取去哪兒
    現在我們用一個實戰項目,來進一步掌握 pyspider 框架的使用。此次的項目爬取的目標是「去哪兒網」,我要將所有攻略的作者、標題、出發日期、人均費用、攻略正文等保存下來,存儲到 MongoDB 中。1 準備工作請確保已經安裝了 pyspider 和 PhantomJS,安裝好了 MongoDB 並正常運行服務,還需要安裝 PyMongo 庫。
  • 實戰:爬取中文網站遇到亂碼時怎麼辦?
    閱讀時間約8分鐘在爬取中文網站時其實對於爬取內容出現亂碼的原因,基本是使用錯誤編碼將爬取內容(二進位字符)解碼為字符串,只需使用正確編碼就能將其轉換為人類能正常讀取的文字。這個知識點可能大部分程式設計師都知道,但很多人不知道怎樣處理爬取內容亂碼的問題,本文將以requests庫為例提供一種解決思路。使用環境實戰案例話不多說,看下面的中文網站實例,在瀏覽器下所有文字都可以正常顯示。
  • 乾貨 | 18個Python爬蟲實戰案例(已開源)
    >百度文庫文章下載_rev2《帥啊》網帥哥圖片下載構建代理IP池《火影忍者》漫畫下載財務報表下載小助手一小時入門網絡爬蟲抖音App視頻下載_rev1抖音App視頻下載_rev2抖音App視頻下載_rev3GEETEST驗證碼破解12306搶票小助手
  • 爬蟲 | 快手短視頻爬取經驗分享
    http post請求,返回數據是json ,展開後發現一共是20條視頻信息,先確保是否正確,找一個視頻連結看下。           threads = int(sys.argv[1])        except (IndexError, ValueError):            print u"n用法: " + sys.argv[0] + u" [線程數:10] n"            print u"例如:" + sys.argv[0] + " 10" + u"  爬取視頻
  • Selenium 爬取評論數據,就是這麼簡單!
    實用性很差,因此,我們需要使用 Selenium 來爬取動態數據。評論區的數據,大多數情況下,都需要下拉刷新才能加載出來。而 Selenium 就能幫我們很好的爬取動態數據。在本場 Chat 中我將介紹如何用基於 Selenium 的爬蟲爬取 B 站評論,並介紹如何用 Firefox 瀏覽器的實用插件 FirePath 協助爬蟲。
  • Python爬蟲實戰(2):爬取京東商品列表
    在上一篇《Python爬蟲實戰:爬取Drupal論壇帖子列表》,爬取了一個用Drupal做的論壇,是靜態頁面,抓取比較容易,即使直接解析
  • 分享一個Java爬蟲實戰,全網博文爬取
    本文將介紹一鍵爬取文章內容並保存入庫。一鍵爬取 <!; <groupId>com.kotcrab.remark</groupId> <artifactId>remark</artifactId> <version>1.2.0</version></dependency>CREATE TABLE `app_blog_crawl
  • Python 爬蟲實戰:爬取解放日報新聞文章
    上一篇《Python 爬蟲實戰: 爬取人民日報新聞文章》發布之後,確實幫到了不少朋友
  • 用Python爬取手機APP
    前言如果你以為python只可以爬取web網頁,那就大錯特錯了,本篇文章教你如何爬取手機app的信息。
  • Python自動化爬取App數據
    MongoDB Server - Download MongoDB爬取思路爬取思路:Android SDK的安裝與配置打開Android Studio, 選擇"Configure->SDK Manager->Apperance&Behavior->System Settings->Android SDK", 選擇對應安卓機版本的SDK,如圖
  • 利用appium框架爬取手機APP
    今天我們就從技術的角度探索一下自動化獲取手機app聊天記錄的方法;爬蟲界有句話——可見即可爬。那麼我們怎麼爬取手機app呢?之前爬取拉勾網的時候我們用了selenium自動爬取拉勾網,從行為上模擬人的瀏覽行為,從而獲取信息;appium這個詞是app和selenium的合成詞,就是一個自動化測試開源工具,支持 iOS 平臺和 Android 平臺上的原生應用,web應用和混合應用,因此可以藉助它來實現我們的任務。     工欲善其事,必先利其器。