為什么寫這篇文章,主要是因為看了一篇文章。
“在用Python粉碎了這些高價值的女神之后,她們突然成了生活中的贏家?!焙唵蚊枋隽艘粋€工程師用Python+ADB+鵝廠AI在一個晚上關(guān)注了1000多個美女姐妹。
充分體現(xiàn)了大學(xué)生和工廠工人的區(qū)別。這里不得不說XX牛皮...
有一次我一個人在那個諾大工廠,想著自己的人生,想著自己該去哪里。
我記得那時候我也是靠刷刷抖嗓子度過悲慘的日子。
只是沒有上面那個大哥厲害。我是一個人工識別的漂亮小姐姐...
即使現(xiàn)在我已經(jīng)注冊了鵝廠的AI賬號,但是還是不能用。
那我們先從簡單的開始,提前關(guān)注,然后用Python自動下載街拍視頻!?。?/p>
/ 01 / Charles
用查爾斯找視頻的API接口,具體操作和之前當(dāng)當(dāng)一樣,就不細說了。
這里,視頻的請求信息可以通過滑動顫音應(yīng)用程序來獲得。
通過多次實驗發(fā)現(xiàn),鏈接后面會不斷變化,只有鏈接前面不變,即“http://v1-dy”、“http://v6-dy”、“http://v9-dy”不變。
因此,在編寫腳本時,可以從這個信息作為鏈接開始。
/ 02 / mitmproxy
用mitmproxy中的mitmdump組件對接Python腳本,用Python實現(xiàn)監(jiān)聽后的處理。
這里我只是用腳本來獲取鏈接,不直接用腳本下載視頻。
因為我在mitmdump.exe文件所在的文件夾中運行腳本,所以請求模塊不能導(dǎo)入到腳本中。
不想搞煩人的環(huán)境變量,所以只搞鏈接。
然后下載視頻,視頻鏈接需要復(fù)制,可能有重復(fù)的。
Python腳本如下。
defresponse(流量):
URL =[' http://v1-dy ',' http://v3-dy ',' http://v6-dy ',' http://v9-dy']
#過濾網(wǎng)址,只選擇視頻的網(wǎng)址
forurl inurls:
ifurl inflow.request.url:
打印(“顫音視頻”)
withopen('douyin.csv ',' a+,編碼='utf-8-sig') asf:
f.write(flow.request.url +' ')
/ 03 / Appium
為顫音配置Appium參數(shù)。
點擊藍色按鈕,手機會自動啟動顫音App!
接下來操作手機,然后點擊Appium的刷新按鈕,得到元素定位碼。
通過這個實踐,發(fā)現(xiàn)Appium有時候無法很好的得到元素的定位,可能就像Web端的iframe頁面一樣。
所以對于缺失的元素,我直接點擊手機的屏幕位置。
因為手機屏幕尺寸不同,這個參數(shù)肯定會變化,所以有缺點,不能通用。
{左右滑動切換圖片}
大致操作如上圖。Upmaster的主頁地圖丟失。請自己拿定主意。Python代碼如下。
importtime
importrandom
fromappium importwebdriver
from selenium . web driver . common . by import by
from selenium . web driver . support . ui importWebDriverWait
from app ium . web driver . common . touch _ action import TouchAction
from selenium . web driver . support import expected _ conditions ASec
defmain():
#設(shè)置驅(qū)動程序配置
服務(wù)器= 'http://localhost:4723/wd/hub '
desired_caps = {
平臺名:“‘Android’,
設(shè)備名':' STF_AL00 ',
app PACkage ':' com . ss . Android . ugc . awe me ',
appActivity ':' . main . main activity ',
#關(guān)閉手機軟鍵盤
“unicode鍵盤”:真,
“重置鍵盤”:真
}
driver = webdriver。遠程(服務(wù)器,所需的_caps)
wait = WebDriverWait(驅(qū)動程序,60)
#同意用戶隱私協(xié)議,點擊
button_1 =等到(EC . presence _ of _ element _ located((By。ID,' com.ss.android.ugc.aweme:id/q6 '))
button_1 .單擊()
#沒有電話權(quán)限,點擊
button_2 =等到(EC . presence _ of _ element _ located((By。ID,' com . Android . package installer:ID/permission _ deny _ button '))
button_2 .單擊()
#禁止位置許可,點擊
button_3 =等到(EC . presence _ of _ element _ located((By。ID,' com . Android . package installer:ID/permission _ deny _ button '))
button_3 .單擊()
time.sleep(2)
#向上滑動進入顫音視頻播放頁面
觸摸動作(駕駛員)。按下(x=515,y=1200)。move_to(x=515,y=1000)。釋放()。執(zhí)行()
#這里需要設(shè)置長延時,因為顫音有引導(dǎo)操作和提示,所以需要等一會兒。
睡眠時間(20)
#點擊顫音的“喜歡”部分進入登錄界面
觸摸動作(駕駛員)。按壓(x=950,y=800)。釋放()。執(zhí)行()
#單擊密碼登錄
button_4 =等到(EC . presence _ of _ element _ located((By。ID,' com . ss . Android . ugc . awe me:ID/afg '))
button_4 .單擊()
#輸入賬號
button_5 =等到(EC . presence _ of _ element _ located((By。ID,' com . ss . Android . ugc . awe me:ID/ab _ '))
Button_5.send_keys('您的帳號')
#輸入密碼
button_6 =等到(EC . presence _ of _ element _ located((By。ID,' com . ss . Android . ugc . awe me:ID/AES '))
Button _ 6.send _ keys('您的密碼')
time.sleep(2)
#因為會跳出軟鍵盤,擋住登錄按鈕,點擊軟鍵盤取消
觸摸動作(駕駛員)。按下(x=980,y=1850)。釋放()。執(zhí)行()
time.sleep(2)
#單擊登錄按鈕
button_7 =等到(EC . presence _ of _ element _ located((By。ID,' com . ss . Android . ugc . awe me:ID/abb '))
button_7 .單擊()
time.sleep(2)
觸摸動作(駕駛員)。按下(x=990,y=1850)。釋放()。執(zhí)行()
button_8 =等到(EC . presence _ of _ element _ located((By。ID,' com . ss . Android . ugc . awe me:ID/a _ 7 '))
button_8 .單擊()
button_9 =等到(EC . presence _ of _ element _ located((By。XPATH,'/hierarchy/Android . Widget . FrameLayout/Android . Widget . LinearLayout/Android . Widget . RelativeLayout/Android . Widget . LinearLayout/Android . Widget . FrameLayout/Android . view . ViewGrouP/Android . Widget . LinearLayout/Android . support . V7 . Widget . RecycerView/Android . Widget . RelativeLayout[2]/Android . Widget . RelativeLayout[1]'))
button_9 .單擊()
#轉(zhuǎn)到上行主頁,點擊第一個視頻
button_10 =等到(EC . presence _ of _ element _ located((By。ID,' com . ss . Android . ugc . awe me:ID/AQM '))
button_10.click()
#繼續(xù)向下滑動到頁面底部
同時:
觸摸動作(駕駛員)。按(x=515,y=1247)。move_to(x=515,y=1026)。釋放()。執(zhí)行()
time . sleep(float(random . randint(5,10)))
if__name__ == '__main__ ':
main()
要下載視頻代碼,需要復(fù)制視頻鏈接。
進口熊貓aspd
導(dǎo)入請求
importos
num = 0
dom = []
folder_path = "F:/video/"
os.makedirs(folder_path)
df = pd.read_csv('douyin.csv ',header=None,name =[" URL "])
#復(fù)制鏈接并刪除剛剛進入顫音采集的視頻鏈接
fori indf['url'][2:]:
ifi notindom:
dom.append(i)
#下載視頻
forj indom:
url = j
num += 1
響應(yīng)=請求。獲取(網(wǎng)址,流=真)
filename = str(num)+. MP4
帶open('F:video'+ filename,' ab+') asf:
f.write(response.content)
f.flush()
打印(文件名+“下載完成”)
最后,我成功地獲得了我姐姐們的所有視頻...
如果我在工廠,知道怎么操作就好了,哈哈。
其實我想的更多。大部分女生喜歡拍顫音,但不要下載這種操作。
然后,給弟弟們一個機會,下載他們喜歡的姐妹的顫音視頻。
然后編輯一個“最美時刻”系列的視頻,機會就來了...
/04/摘要
代碼放在“GitHub”上。https://github.com/Tobby-star/douyin
[本文作者]
Fa nast: Python愛好者,專注爬蟲,數(shù)據(jù)分析,可視化
1.《下栽抖音 用 Python 全自動下載抖音小姐姐視頻》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《下栽抖音 用 Python 全自動下載抖音小姐姐視頻》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/shehui/1037598.html