[問題] youtube記錄觀看人數

作者: tinasfishs (Tina)   2018-09-16 20:49:51
想要寫一個可以定時記錄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掉了
謝謝大家
作者: neil987 (R5大小姐-EX人品崩壞)   2018-09-18 23:25:00
YT有GOOGLE API 建議你研究那個

Links booklink

Contact Us: admin [ a t ] ucptt.com