看板 Python 關於我們 聯絡資訊
想要寫一個可以定時記錄youtube觀看人數的程式 以最近很紅自己也很喜歡的木曜4超玩影片當練習 https://www.youtube.com/watch?v=Vk3YrCNliZ8
遇到以下問題: 1.我沒辦法直接從該支影片的網址擷取任何資訊,跟一般寫find_all再加些 屬性就會跑出東西很不一樣@@ 點選檢查後發現youtube影片網頁不是只有簡單的 div/ span 那些的,好像是一層一層包裝的,所以即使觀看人數在頁面上看起來很 明顯卻無法用find_all挑出來 (這真的是新手村的問題..........) 2.所以後來參考這個網址 https://hiskio.com/courses/112/lectures/3155 改成在youtube搜尋頁跑 beautifulsoup 有截到觀看人數 不過問題又來了.....重複執行的時候 每次的觀看人數都一樣 (這是熱門影片...幾分鐘內一定會有新增瀏覽人數,想也知道不可能數字一樣) 我的程式如下: (我是想把人數&時間記錄在txt檔內) import datetime from apscheduler.schedulers.background import BackgroundScheduler from bs4 import BeautifulSoup import requests def run_task(): url="http://tinyurl.com/yczzbgez" request = requests.get(url,timeout=5) content = request.content soup = BeautifulSoup(content, "html.parser") for all_mv in soup.select(".yt-lockup-video"): data = all_mv.select(".yt-lockup-meta-info") time = data[0].get_text("#").split("#")[0] see = data[0].get_text("#").split("#")[1] str1=see[0:len(see)-5] str2= str1.replace(',','') # 開啟檔案 fp = open("D:/TEST0916.txt", "a") # 寫入 到檔案 x="\n"+str(datetime.datetime.now())+","+str(float(str2)) #x='haha' fp.write(x) # 關閉檔案 #fp.close() scheduler = BackgroundScheduler() # 每隔兩分鐘执行一次 job_func 方法 scheduler .add_job(run_task, 'interval', minutes=2) # 在 期間執行一次 scheduler .add_job(run_task, 'interval', minutes=2, start_date='2018-09-16 08:40:01' , end_date='2018-09-16 09:10:01') scheduler.start() 試了很多google到python可以重複執行任務的方法, 寫法大同小異,大致上我的確可以在要求的時間間隔內印出資料,但資料就會 長這樣↓ 2018-09-16 08:29:08.159881,926172.0 2018-09-16 08:30:58.751207,926172.0 2018-09-16 08:31:07.631715,926172.0 ..... 逗號後面的 926172就是觀看人數,但很明顯不管執行多久這個數值都沒有變 (我有把程式跑了10幾分鐘....刷新youtube網頁當然發現人數有增加, 但我記錄到的數值都是一樣的,就像程式停在執行第一次requests一樣....) 新手想知道為什麼以及如何改善QQ 還是純粹是因為太頻繁執行requests的指令所以被youtube ban掉了 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.69.147.181 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1537102195.A.ADD.html
neil987: YT有GOOGLE API 建議你研究那個 09/18 23:25