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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python

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

selenium

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

Q&A

解決済

2回答

483閲覧

[Python] seleniumでTypeError: find_elements_by_xpath() takes exactly 2 arguments (4 given)と表示される

kuroishi

総合スコア53

Python

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

selenium

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

0グッド

0クリップ

投稿2020/07/21 05:15

お世話になっています。

今回下記のコードにて表題のエラーが出ましたので教えていただきたいです。

k = 1 while k<11: t_url = len(driver.find_elements_by_xpath('//*[@id="a3ren"]/table/tbody/tr[',k,']').get_attribute("class")) if t_url>0 : row = driver.find_elements_by_xpath('//*[@id="a3ren"]/table/tbody/tr[',k,']/th').text print(row)

にて

t_url = len(driver.find_elements_by_xpath('//*[@id="a3ren"]/table/tbody/tr[',k,']').get_attribute("class")) TypeError: find_elements_by_xpath() takes exactly 2 arguments (4 given)

となります。

いろいろ検索してみましたが、defなどの関数定義したものしか見つからず今回の課題解決ができませんでした。ぜひよろしくお願いいたします。

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

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

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

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

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

can110

2020/07/21 05:36

本来あなたが「find_elements_by_xpath」関数に渡したいパラメータの内容(文字列?)を記載ください。
kuroishi

2020/07/21 05:49

渡したいパラメーターとしてclassの個数を知りたいと思っています。 目的としては、このclassを含んだtrがあった場合、そのもう一つしたの階層にあるthの文字を取得することです。
can110

2020/07/21 05:52

「classの個数を知りたい」という目的を実現するために、パラメータとしてどのようなxpath文字列を渡そうと意図しているのか?という質問です。
m.ts10806

2020/07/21 08:44

回答依頼いただきましたが、Pythonには知見がありませんので、あしからず。
guest

回答2

0

ベストアンサー

こういうことですか?

python

1for k in range(10): 2 try: 3 print(driver.find_elements_by_css_selector('#a3ren > table > tbody > tr')[k].text) 4 except IndexError: 5 break

投稿2020/07/22 15:21

shirai

総合スコア1290

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

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

kuroishi

2020/07/26 04:42

これでした!ありがとうございました!
guest

0

変数kを文字列として連結したいのだと想像しての回答です。
'//*[@id="a3ren"]/table/tbody/tr[',k,']''//*[@id="a3ren"]/table/tbody/tr['+str(k)+']'としてください。

投稿2020/07/21 05:39

can110

総合スコア38262

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

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

kuroishi

2020/07/21 05:51

t_url = len(driver.find_elements_by_xpath('//*[@id="a3ren"]/table/tbody/tr['+str(k)+']').get_attribute("class")) AttributeError: 'list' object has no attribute 'get_attribute' となりました。
kuroishi

2020/07/21 05:52

上記の質問への返答が行いたいことになっています。 よろしくお願いいたします。
can110

2020/07/21 05:54

driver.find_elements_by_xpath(~)の戻り値としてどのような型のどのような値が返ってきてほしいと意図していますか?
kuroishi

2020/07/21 05:58

driver.find_elements_by_xpath('//*[@id="a3ren"]/table/tbody/tr[',k,']').get_attribute("class") ではint形で、戻り値として数字(2個存在してれば「2」) driver.find_elements_by_xpath('//*[@id="a3ren"]/table/tbody/tr[',k,']/th').text ではverchar形として、文字として(「2020年1月」のような)の戻り値を意図していました。
can110

2020/07/21 06:02

「driver.find_elements_by_xpath(~).get_attribute("class")」ではなく「driver.find_elements_by_xpath(~)」の戻り値について尋ねています。 分からなければ、 「hoge = driver.find_elements_by_xpath(~); print(type(hoge)); print(hoge)」のような感じで出力してみて、意図した結果になっているかを確認ください。
kuroishi

2020/07/21 06:16

結果としてはprint(type(hoge));のリストで結果が欲しいと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問