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

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

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

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

Python

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

selenium

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

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

Q&A

1回答

5993閲覧

Python/SeleniumでClass名を取得

smbb

総合スコア0

スクレイピング

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

Python

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

selenium

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

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

0グッド

0クリップ

投稿2020/09/01 09:13

質問内容

PythonでSeleniumを用いてTripAdivsorの口コミデータをスクレイピングしてデータ収集することを目的としています。
表示されている全ての口コミや利用時期は取得できたのですが、客室やサービスのレーティングも同様に取得したいと考えているのですが、それらのレーティングの数値はclass名の中に下記のような形で記載されており、要素として記述されていません。
このような場合、class名を取得することはできるのでしょうか?よろしくお願いいたします。
つまり↓のような状況から「ui_bubble_rating bubble_30」をうまく抜き出してくることを考えています。

<span class="ui_bubble_rating bubble_30"> ←この場合はレーティング30です。

よろしくお願いいたします。

補足情報

「続きを読む」という機能があることからBeautifulSoupではなく、Seleniumをしようしています。
TripAdvisor URL
https://www.tripadvisor.jp/Hotel_Review-g298560-d1082462-Reviews-or5-Hotel_Clubby_Sapporo-Sapporo_Hokkaido.html#REVIEWS

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

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

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

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

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

t_obara

2020/09/01 09:29

禁止行為として定義されていることはご存知なのでしょうか。
smbb

2020/09/01 09:36

そうなんですね。知りませんでした。ありがとうございます。
guest

回答1

0

一応回答のっけておきます。
やや強引に見えますが、DOMをよく見て欲しい情報を柔軟に入手できるようにしましょう。

python

1driver.get('https://www.tripadvisor.jp/Hotels-g298223-Ishigaki_Okinawa_Prefecture-Hotels.html') 2 3hotels = [] 4for one_hotel in driver.find_elements_by_class_name('prw_meta_hsx_responsive_listing'): 5 hotel_name = one_hotel.find_element_by_class_name('property_title').text 6 hotel_rating = str(float(one_hotel.find_element_by_class_name('ui_bubble_rating').get_attribute('alt').split(' ')[-1])*10) 7 hotels.append({'name': hotel_name, 'rating': hotel_rating}) 8print(hotels)

投稿2020/09/03 15:09

編集2020/09/03 15:10
shirai

総合スコア1290

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

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

1T2R3M4

2020/09/05 01:32

(ii)本契約に準拠する場合や当社が事前に書面で許可した場合を除き、その目的を問わず、ロボット、スパイダー、スクレイパーまたは他の自動化ツールまたは手動プロセスを使用して、サービスのコンテンツ(ユーザーのプロフィールや写真を含むがこれらに限定されない)へのアクセス、監視、複製、配信、送信、放送、表示、販売、ライセンス付与、コピー、またはその他の方法で利用すること https://tripadvisor.mediaroom.com/jp-terms-of-use#%E7%A6%81%E6%AD%A2%E8%A1%8C%E7%82%BA 許可得てからの回答ですか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問