## PythonでYoutubeの動画を自動で高評価してみたい
もともとこのやる気はchorm の拡張機能youtube Auto like (https://chrome.google.com/webstore/detail/youtube-auto-like/cbppmhmoknkbfaphkleodjhkfecceono?hl=ja)というjavascript で書かれたアプリケーションを発見したときにプログラム初心者自分でできるのではと思ってpython でやってみようと思いました
youtube auto like の javascript コードが次です
javascript
1/** 2 * Created by Profesor08 on 12.10.2015. 3 */ 4(function() { 5 var ScriptForHost = function() { 6 var data = []; 7 this.push = function(hostName, action) { 8 data.push({ 9 name: hostName, 10 action: action 11 }); 12 }; 13 this.run = function(hostName) { 14 data.forEach(function(host) { 15 if (hostName = host.name) { 16 host.action(); 17 } 18 }); 19 }; 20 21 }; 22 var sfh = new ScriptForHost(); 23 sfh.push("youtube.com", function() { 24 var isNew = false; 25 function getLikeButton() { 26 var btn = document.querySelector(".like-button-renderer-like-button-unclicked"); 27 if (!btn) { 28 btn = document.querySelector("#top-level-buttons ytd-toggle-button-renderer:first-of-type"); 29 if (btn) { 30 isNew = true; 31 } 32 } 33 34 return btn; 35 } 36 37 function getDislikeButton() { 38 var btn = document.querySelector(".like-button-renderer-dislike-button-unclicked"); 39 40 41 if (!btn) { 42 btn = document.querySelector("#top-level-buttons ytd-toggle-button-renderer:last-of-type"); 43 44 if (btn) { 45 isNew = true; 46 } 47 } 48 49 return btn; 50 } 51 52 53 function isActive(btn) { 54 if (btn) { 55 if (isNew) { 56 return btn.classList.contains("style-default-active"); 57 } else { 58 return btn.classList.contains("hid"); 59 } 60 } 61 62 return false; 63 } 64 65 var inter = setInterval(function() { 66 if (!isActive(getDislikeButton())) { 67 var btn = getLikeButton(); 68 69 if (!isActive(btn)) { 70 btn.click(); 71 } 72 } 73 74 }, 5000); 75 76 }); 77 78 sfh.run(window.location.hostname); 79})(); 80
このようなコードです
そして真似しようとして書いた自分のコードが次です
エラーは出ませんが高評価ボタンが押せてないです
python
1 2from selenium import webdriver 3import request 4import time 5 6browser = webdriver.Chrome(executable_path='D:\Drivers\chromedriver_win32\chromedriver.exe') 7 8browser.get('https://www.youtube.com/') 9 10W= "https://www.youtube.com/watch?v=SX_ViT4Ra7k" 11 12browser.get(W) 13 14time.sleep(3) 15 16browser.find_element_by_id(".like-button-renderer-like-button-unclicked").click() 17 18
ただクリックしたいだけなのですがそのための
高評価ボタンの要素がどうやって取得すればいいのかわかりません
高評価ボタン周辺のHTMLコード
HTML
1 2<yt-icon-button id="button" 3class="style-scope ytd-toggle-button-renderer style-text" 4 aria-pressed="false"> 5<button id="button" class="style-scope yt-icon-button" aria-label="他 1,186,309 人もこの動画を高く評価しました"> 6<yt-icon class="style-scope ytd-toggle-button-renderer"> 7<svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%;"> 8<g class="style-scope yt-icon"> 9 <path d="M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-1.91l-.01-.01L23 10z" class="style-scope yt-icon"></path> 10 </g></svg> 11 12 13 </yt-icon></button></yt-icon-button>
最初のほうにid="button"とありますがこれはID属性で取得できるものなのでしょうか?
できないとすればどのようにして取得すればよいのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。