以下のページを参考にYouTubeLiveのコメント取得をしていました.
http://watagassy.hatenablog.com/entry/2018/10/08/132939
一週間前まで普通に動作していたのですが,ある日を堺に最初の live_chat_replay
が取得できなくなってしまいました.
まる一日無限ループを使って連続でアクセスしていたため,ブラックリストのようなものに入ってアクセスが拒否されているのでしょうか?
わかる方がいらっしゃいましたらアドバイスいただけると幸いです.
ちなみにブラウザからYouTubeは普通に見られます.
以下,実際に使っているコード
python
1while 1==1: 2 for vid in videoIdList: 3 print(vid) 4 target_url = f'https://www.youtube.com/watch?v={vid}' 5 dict_str = "" 6 next_url = "" 7 comment_data = [] 8 session = requests.Session() 9 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'} 10 11 html = requests.get(target_url) 12 soup = BeautifulSoup(html.text, "html.parser") 13 14 for iframe in soup.find_all("iframe"): 15 if("live_chat_replay" in iframe["src"]): 16 next_url= iframe["src"] # ←これが取得できない 17 18 while(1): 19 try: 20 html = session.get(next_url, headers=headers) 21 soup = BeautifulSoup(html.text,"lxml") 22 23 for scrp in soup.find_all("script"): 24 if "window[\"ytInitialData\"]" in scrp.text: 25 dict_str = scrp.text.split(" = ")[1] 26 27 dict_str = dict_str.replace("false","False") 28 dict_str = dict_str.replace("true","True") 29 30 dict_str = dict_str.rstrip(" \n;") 31 dics = eval(dict_str) 32 33 continue_url = dics["continuationContents"]["liveChatContinuation"]["continuations"][0]["liveChatReplayContinuationData"]["continuation"] 34 next_url = "https://www.youtube.com/live_chat_replay?continuation=" + continue_url 35 for samp in dics["continuationContents"]["liveChatContinuation"]["actions"][1:]: 36 comment_data.append(str(samp)+"\n") 37 except: 38 break 39 40 comment_data = pd.DataFrame(comment_data)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/16 17:00
2020/07/16 17:07
退会済みユーザー
2020/07/16 17:09
2020/07/16 21:35