UDs
@UDs

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

selenium同じclass名のリストの作り方

Q&A

Closed

python selenium を使って要素を取得したいのですが、一部不明点があり詰まっています。

a.html
<div 492="" class="card__name">
  <div data-v-9e31d492=""></div>
  <div data-v-9e31d492="">Fox</div>
</div>
<div 492="" class="card__name">
  <div data-v-9e31d492=""></div>
  <div data-v-9e31d492="">Cat</div>
</div>

こんな感じのHTMLから日本語部分のみを取得したいのですが、どういった方法があるでしょうか?

main.py
names = driver.find_elements(By.CLASS_NAME, "card__name")

names_list = []
for name in names:
    namees.append(name.text)

こんな感じのコードを書いていますが、これだと英語部分も取得してしまっていて不便です。

初心者的な質問ですが、よろしくお願いします。

0

2Answer

「card__name」の下の1つ目のdiv要素が必ず日本語名なのであれば、以下のように1つ目の要素を取得するように記述すれば実現できると思います。

names = driver.find_elements_by_class_name("card__name > div:nth-child(1)")
for name in names:
    print(name.text)

#狐
#猫

1つ目に日本語・2つ目に英語と決まっておらず、また各要素を特定できるようなクラスなどがなければ、すこし強引なやり方ですが文字列がアルファベットで構成されるか日本語で構成されるかのような判断しかないと思います。

0Like
namees = []
for name in names:
    namees.append(name.text)

namees = namees[0::2]

こちらに行きつきました
(1)は一度試してみたのですが、なぜかうまくいきませんでした。

ありがとうございます。

0Like

Your answer might help someone💌