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

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

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

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

selenium

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

Q&A

解決済

1回答

3575閲覧

seleniumでfind_elementsしたときのlistの.textの高速

takugon92

総合スコア20

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2020/05/22 04:02

前提・実現したいこと

seleniumでfind_elementsしたときのlistの.textを高速化したい
いまforループで取得しているのですが,listが長いので,時間がかかっています.
この部分の時間を短縮したいので,forループ以外の書き方があればご教授お願いします.

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

seleniumでdriver.find_elements_by_で取得したものを.textで変換し,csvに記述しているのですが,forループが長く,時間がかかります.

該当のソースコード

python
text_list = []
a = driver.find_elements_by_id("ID")
for i in a:
text_list.append(i.text)

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

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

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

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

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

guest

回答1

0

ベストアンサー

スクレイピング対象の具体的なサイトアドレスが全く示されていないため手探りになりますが、
とりあえず内包表記を利用して

text_list = [] a = driver.find_elements_by_id("ID") text_list.extend([i.text for i in a])

としてみたらどれくらい変化がありますでしょうか?

あどchromedriverよりもgeckodriverの方が速いという情報もあります。
https://qiita.com/BlueSilverCat/items/08bb94468484e2db3ca3


from time import time #時間計測用 s=time() driver.get(url) text_list = [] a = driver.find_elements_by_class_name("m05") text_list.extend([i.text for i in a]) print(time()-s)

上記のコードで計測すると、ページが表示されて以降リストの取得自体は4~5秒で完了しています。

※リスト取得ではなく。Chromeでのサイトの読み込みに時間がかかるのは、サイト自体の問題だと思います。

投稿2020/05/22 04:16

編集2020/05/22 10:23
patapi

総合スコア820

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

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

takugon92

2020/05/22 05:21

返信ありがとうございます. いま,taizanさんの方法で実装しました. forループでは4件情報を得るのに, 21→19→25→29秒 内包表記では 21→22→25→31秒 で大してかわらずでした. geckodriver使ってみます. スクレイピング先は https://www.hellowork.mhlw.go.jp/kensaku/GECA110010.do?action=initDisp&screenId=GECA110010 ハローワークで,自分の入れた条件で検索し,詳細にうつり,その情報をすべて取得するプログラムを作っています.情報不足ですみません https://www.hellowork.mhlw.go.jp/kensaku/GECA110010.do?screenId=GECA110010&action=dispDetailBtn&kJNo=0101018101801&kJKbn=1&jGSHNo=R91e%2B8msDguRrfwZUk5qCg%3D%3D&fullPart=1&iNFTeikyoRiyoDtiID=&kSNo=&newArrived=&tatZngy=1&shogaiKbn=0 ↑サイトのclass_name m05をfind_elements_by_class_nameで取得し,csvの保存したいのです
patapi

2020/05/22 10:23

回答後半に追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問