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

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

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

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

selenium

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

Q&A

解決済

2回答

917閲覧

webdriverについて

ravi9534

総合スコア2

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2022/08/17 06:46

前提

ブログの記事のコードをコピペして実行しましたが、chromedriverで指定したページまでは開けるのですが、csvファイルに保存するところでattribute errorになります。

実現したいこと

ソースコードをエラーなく動作するようにしたい

python3

1# coding:utf-8 2from selenium import webdriver 3from time import sleep 4import csv 5 6def save_csv(data, file_path): 7 with open(file_path, 'w') as file: 8 writer = csv.writer(file, lineterminator='\n') 9 writer.writerows(data) 10# xpath一覧 11products_xpath = "//div[contains(@class, 'item-box')]//a" 12#product_title_xpath = "//h1[contains(@class, 'item__name')]" 13product_title_xpath = "/html/body/div[3]/div/div/div/div/div/div[2]/section/div[2]/section/div[1]/div/div[2]/p/a/span[@itemprop, 'name']" 14price_xpath = "//p[contains(@class, 'item__value')]/span" 15soldout_xpath = "//div[contains(@class, 'photo-box__soldout_ribbon')]" 16 17# 商品情報を格納するリスト 18products_detail = [] 19 20# Chromeインスタンスの作成 21driver = webdriver.Chrome() 22driver.implicitly_wait(10) 23 24# 検索結果を表示 25search_keyword = '嫌われる勇気' 26driver.get(f"https://fril.jp/s?query={search_keyword}") 27sleep(1) 28 29# 商品一覧取得 30porducts = driver.find_elements_by_xpath(products_xpath) 31links = [product.get_attribute('href') for product in porducts] 32sleep(1) 33 34# 商品個別ページを表示 35for link in links: 36 if len(products_detail) < 10: 37 try: 38 driver.get(link) 39 40 # 商品情報を取得 41 product_name = driver.find_element_by_xpath(product_title_xpath).text 42 product_price = driver.find_element_by_xpath(price_xpath).text.replace("¥", "") 43 product_url = driver.current_url 44 if len(driver.find_elements_by_xpath(soldout_xpath)) > 0: 45 product_status = "売り切れ" 46 else: 47 product_status = '販売中' 48 products_detail.append([search_keyword, product_name, product_price, product_status, product_url]) 49 50 # 待機処理 51 sleep(2) 52 except: 53 pass 54 55save_csv(products_detail, 'rakuma.csv') 56 57# ブラウザを終了 58driver.close() 59

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

Traceback (most recent call last): File "rakuma.py", line 30, in <module> porducts = driver.find_elements_by_xpath(products_xpath) AttributeError: 'WebDriver' object has no attribute 'find_elements_by_xpath'

python

試したこと

xpathを変えて実行してみました。
find_elements_by_xpath()を調べました。

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

osx zsh

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

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

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

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

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

guest

回答2

0

ベストアンサー

find_elements_by_xpath()を調べました。

のであればわかるのではないかと思うのですが、find_elements_by_* メソッドは、 最近削除されました。

https://github.com/SeleniumHQ/selenium/blob/a4995e2c096239b42c373f26498a6c9bb4f2b3e7/py/CHANGES

新しい方法は、以下のドキュメントの通り、find_element()メソッドを使うことです。
https://selenium-python.readthedocs.io/locating-elements.html#locating-elements

python

1from selenium.webdriver.common.by import By 2 3porducts = driver.find_elements(By.XPATH, products_xpath)

投稿2022/08/17 07:10

TakaiY

総合スコア12765

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

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

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問