UDs
@UDs

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

python selenium 処理量が多い

python selenium を用いてスクレイピングをしています。

具体的には、メルカリのようなサイトの出品されたものの名前と価格、出品IDを取得するというようなプログラムです。

先ほど実際に処理を動かしてみたのですが、処理時間がかなりかかってしまいました。

何か良い時短方法や処理を軽くする方法など有れば教えてください。

最終的にAWSもしくは、レンタルサーバーでの運用を検討していますが、この処理が重いと金額的に変わってきたりするのでしょうか?

一部処理を載せます

取得したデータを一度リストでまとめて、pandasに渡し、FLASKのrender templateでHTML側のテーブルに表示させます。
10分に1回程度の定期実行です。

データ取得の数は、5000個程度で5000×3のテーブルになってました。
実行時間としては、4分程度だったと思います。
あまり負担のかからない処理などがあれば教えて欲しいといった意図で投稿しました。

main.py
names = driver.find_elements(By.CLASS_NAME, "MyNFTList-card__name")
prices = driver.find_elements(By.CLASS_NAME, "nft-price_text")
numbers = driver.find_elements(By.CLASS_NAME, "MyNFTList-card__number")

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

pricees = []
for price in prices:
    pricees.append(price.text)

numberes = []
for number in numbers:
    numberes.append(number.text)

data = list(zip(namees, pricees, numberes))

df = pd.DataFrame(data)

#HTML側に渡す
header = df.columns
record = df.values.tolist()

print(df)
0

2Answer

実際のコードも無ければ「どのくらいの処理時間をどのくらい改善したいのか」、といった具体的な情報が全く無いので質問に回答しようがありません。

0Like

Comments

  1. @UDs

    Questioner

    ありがとうございます。

    一部コードを載せました。

    Q.どのくらいの処理時間をどのくらい改善したいのか
    A.実行時間としては、4分程度だったと思います。
    あまり負担のかからない処理などがあれば教えて欲しいといった意図で投稿しました。

一般にリスト内包記法を使うとappendを使うより速くなります。nameesのリストを作るなら

namees = [name.text for name in names]

こんな感じで作ります。

0Like

Comments

  1. @UDs

    Questioner

    頭から抜けてました。ありがとうございます。

Your answer might help someone💌