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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

931閲覧

Java ScriptのDocumentで複数ある同じclass名から一つを取得したい。

Fantastic_baby

総合スコア5

スクレイピング

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/03/15 02:52

編集2022/03/15 02:55

前提・実現したいこと

 Java Scriptでスクレイピングの一環としてあるサイトの自動で制御するプログラムを作成中です。
そこで、サイト内のクラスを取得して、click()で自動でクリックさせたいと思ってます。
しかし、同じクラス名が複数あり、その中から一つの要素を取得する方法を発見できませんでした。

iPhoneのショートカットで動作させたいので、PythonのSeleniumではなく、JSであえてやってます。
なので、モジュールのインストール等は極力避けたいと考えてます。
また、サイトのHTMLは個人情報が含まれるので、修正を加えてます。

JavaScriptはあまり使ったことがないので、的外れな質問かもしれませんが、どうぞご協力お願いします。

発生している問題・エラーメッセージ

TypeError: null is not an object (evaluating 'document.querySelector(".btn_style3 radius 10").click')

該当のソースコード

JavaScript

1function login2() { 2 document.querySelector(".btn_style3 radius_10").click(); 3 } 4login2() 5 6completion(result); 7

HTML

1 <div class="box_btn_style5"> 2 <button type="button" class="btn_style3 radius_10" onclick="location.href='./abcd.php'"><div><img src="./images/icon_1.png" alt="###"></div><div><span>###</span><span>(Register health data)</span></div></button> 3 </div> 4 <div class="box_btn_style5"> 5 <button type="button" class="btn_style3 radius_10" onclick="location.href='./efgh.php'"><div><img src="./images/icon_2.png" alt="###"></div><div><span>###</span><span>(Review past reports)</span></div></button> 6 </div> 7 <div class="box_btn_style5"> 8 <button type="button" class="btn_style3 radius_10" onclick="location.href='./ijkl.php'"><div><img src="./images/icon_3.png" alt="###"></div><div><span>###</span><span>(Review purpose of use)</span></div></button> 9 </div> 10 <div class="box_contact"> 11 <ul>

試したこと

elements = document.queryselectorall(".btn_style3 radius_10")
ですべてのクラスを取得し、
elements[0]で指定するなど。

補足情報(FW/ツールのバージョンなど)

HTMLはchromeの「ページのソースを表示」から取得しました。

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

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

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

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

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

int32_t

2022/03/15 02:58

btn_style3 と radius_10 を持つ要素は提示されているHTMLには3つありますが、欲しいのは最初のものですか?
yambejp

2022/03/15 03:07

スクレイピングしたソースにJSを追加しクリックして動作させることができる環境なのでしょうか?
maisumakun

2022/03/15 03:21

> 同じクラス名が複数あり、その中から一つの要素を取得する方法 「どれでもいいから1つ」なのでしょうか、それとも「特定の1つ」を選ばなければならない状況でしょうか?
Fantastic_baby

2022/03/15 03:37

皆様 ご連絡ありがとうございます。 説明が足りずすいません。一番上(onclick="location.href='./abcd.php'")の要素のみを選びたいと思ってます。 iphoneの環境で同じサイトの他のページではclick()が使えることを確認しています。
Fantastic_baby

2022/03/15 11:07

yambejpさん回答ありがとうございます。 しかし、同様のエラーがでてしました。 なので、querySelectorAllで三つの要素を取得して、その中から特定の一つを取得する方法を教えてもらえないでしょうか。
guest

回答1

0

「btn_style3 radius_10」の両方のクラスが設定されたHTML要素を掴みたいということですか?

javascript

1document.querySelector(".btn_style3.radius_10").click();

複数ある場合は先頭の要素を掴みます

投稿2022/03/15 02:57

編集2022/03/15 02:57
yambejp

総合スコア114769

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問