[问题] 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