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

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

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

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

Q&A

2回答

2103閲覧

Seleniumを使った属性値の取得ができない

dbrow

総合スコア18

スクレイピング

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

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

0グッド

1クリップ

投稿2020/05/03 00:28

前提・実現したいこと

Seleniumを使い、Newspicksトップページの属性値を取得したい

問題

値が帰っているはずのリストが空

コード

driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=Options()

url = 'https://newspicks.com/'
class_name ='title _ellipsis'

driver.get(url)

test = driver.find_elements_by_class_name(class_name)
test

確認できていること

Selenium経由でChromeが立ち上がっていることは確認しました。
Beautiful Soupでは同様の属性値を取得できました。

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

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

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

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

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

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

guest

回答2

0

実際に試してみました。
確かに「find_elements_by_class_name()」だと取得できませんでしたが、
「find_element_by_css_selector()」だと取得できるようです。

下記のサンプルは1つのみ取得していますが、
実際は「find_elements_by_css_selector()」のように複数形でリストを取得してください。

python

1div ='div.news-card div.title._ellipsised' 2test = driver.find_element_by_css_selector(div) 3 4print(test.text)

投稿2020/05/03 23:49

編集2020/05/03 23:52
autumn_nsn

総合スコア335

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

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

dbrow

2020/05/04 12:13

ありがとうございます。こちら試してみます。
guest

0

一旦、driver.find_elements_by_class_name("title")で抽出して、get_attribute("class")を見て"title _ellipsis"であるものを絞り込むのでしょうか。

投稿2020/05/03 00:39

otn

総合スコア84798

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

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

dbrow

2020/05/03 02:09

>一旦、driver.find_elements_by_class_name("title")で抽出して、 以下のような配列で返ってきました。 [<selenium.webdriver.remote.webelement.WebElement (session="a59f0bf67224731aad4b16748db78af4", element="c783723a-1d41-468e-8465-16a53958e189")>, <selenium.webdriver.remote.webelement.WebElement (session="a59f0bf67224731aad4b16748db78af4", element="9197848e-12b6-410a-8133-5457934920e2")>, >get_attribute("class")を見て"title _ellipsis"であるものを絞り込む こちら以下のエラーが返ってきました。 AttributeError: 'list' object has no attribute 'get_attribute'
otn

2020/05/03 02:36

find_elements_~~ で返るのはリストなので、forでリストの要素それぞれを処理しないといません。
dbrow

2020/05/04 12:13

ありがとうございます。承知致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問