質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

1回答

932閲覧

Youtube 高評価 Python 自動化 要素の取得とクリックの仕方を教えてほしいです

rainkee

総合スコア12

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

3クリップ

投稿2019/01/20 02:28

## 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属性で取得できるものなのでしょうか?
できないとすればどのようにして取得すればよいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

模範解答ではないかと存じますが、一応、下記で実行できますね。

driver.find_elements_by_class_name('yt-simple-endpoint')[145].elem.find_element_by_tag_name('button').click()

投稿2019/12/01 15:09

john_doe_

総合スコア354

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問