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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

スクレイピング

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

Chrome

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

Python

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

selenium

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

Q&A

解決済

1回答

592閲覧

Pythonでamazonの商品のレビューのスクレイピングをしたい

rattyo1208

総合スコア12

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

スクレイピング

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

Chrome

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

Python

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

selenium

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

0グッド

0クリップ

投稿2022/07/01 00:35

(例)
pythonでamazonの商品のレビューをスクレイピングするコードを作っています。このコードを実行すると以下のエラーメッセージが表示されます。
初心者なので難しい書き方ができません。

実現したいこと

![イメージ説明]

  • amazonの商品ページのURLを貼り付けることで商品のレビューをリストアップする
  • URLをレビューページのものへ書き換える
  • レビューを取得し、csvファイルに書き出す

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

イメージ説明

例外が発生しました: WebDriverException Message: unknown error: cannot create temp dir for user data dir Stacktrace: Backtrace: Ordinal0 [0x00A86463+2188387] Ordinal0 [0x00A1E461+1762401] Ordinal0 [0x00933D78+802168] Ordinal0 [0x00951AAE+924334] Ordinal0 [0x0094E331+910129] Ordinal0 [0x00981430+1119280] Ordinal0 [0x0098108A+1118346] Ordinal0 [0x0097C5F6+1099254] Ordinal0 [0x00956BE0+945120] Ordinal0 [0x00957AD6+948950] GetHandleVerifier [0x00D271F2+2712546] GetHandleVerifier [0x00D1886D+2652765] GetHandleVerifier [0x00B1002A+520730] GetHandleVerifier [0x00B0EE06+516086] Ordinal0 [0x00A2468B+1787531] Ordinal0 [0x00A28E88+1805960] Ordinal0 [0x00A28F75+1806197] Ordinal0 [0x00A31DF1+1842673] BaseThreadInitThunk [0x76DDFA29+25] RtlGetAppContainerNamedObjectPath [0x76F27A9E+286] RtlGetAppContainerNamedObjectPath [0x76F27A6E+238] File "C:\Users\rattyo\Desktop\卒論\プログラム\プログラム\scraping.py", line 15, in get_page_from_amazon driver = webdriver.Chrome("C:/chromedriver/chromedriver.exe", options=options) File "C:\Users\rattyo\Desktop\卒論\プログラム\プログラム\scraping.py", line 29, in get_all_reviews text = get_page_from_amazon(url) File "C:\Users\rattyo\Desktop\卒論\プログラム\プログラム\scraping.py", line 56, in <module> rvw_list = get_all_reviews(five_star_url)

該当のソースコード

python

1ソースコード 2 3import bs4 4import time 5from selenium import webdriver 6import chromedriver_binary 7from selenium.webdriver.chrome.options import Options 8import csv 9import pprint 10 11def get_page_from_amazon(url): 12 # ヘッドレスモードでブラウザを起動 13 options = Options() 14 options.add_argument('--headless') 15 16 # ブラウザーを起動 17 driver = webdriver.Chrome("C:/chromedriver/chromedriver.exe", options=options) 18 driver.get(url) 19 driver.implicitly_wait(60) 20 text = driver.page_source 21 driver.quit() 22 return text 23 24# 全ページ分をリストにする 25def get_all_reviews(url): 26 rvw_list = [] 27 i = 1 28 while True: 29 print(i,'searching') 30 i += 1 31 text = get_page_from_amazon(url) 32 amazon_soup = bs4.BeautifulSoup(text, features='lxml') 33 rvws = amazon_soup.select('.review-text') 34 for rvw in rvws: 35 rvw_list.append(rvw) 36 # 次へボタン 37 next_page = amazon_soup.select('li.a-last a') 38 39 if next_page != []: 40 next_url = 'https://www.amazon.co.jp/' + next_page[0].attrs['href'] 41 url = next_url 42 time.sleep(1) 43 else: 44 break 45 return rvw_list 46 47if __name__ == '__main__': 48 49 # AmzonURLの入力 50 print('Amazonのレビュー文を収集します\n商品ページのURLを入力してください') 51 page = input('URL:') 52 url = page 53 # URLをレビューページのものに書き換える 54 review_url = url.replace('dp', 'product-reviews') 55 # 星5評価のみのレビューページに書き換える(星5:&filterByStar=five_star,星1:&filterByStar=one_star) 56 five_star_url = review_url + '&filterByStar=one_star' 57 # レビューの取得 58 rvw_list = get_all_reviews(five_star_url) 59 # 全データを表示 60 for i in range(len(rvw_list)): 61 62 rvw_text = rvw_list[i].text 63 rvw_text_list = [] 64 rvw_text_list.append(rvw_text) 65 66 string = ",".join(rvw_text_list) 67 string_new = string.replace('\n','') 68 rvw_text_list_new = string_new.split(",") 69 70 with open("review1.csv",mode='a',encoding="utf-8_sig") as f: 71 writer = csv.writer(f) 72 writer.writerow(rvw_text_list_new) 73 74 75### 試したこと 76 77chromedriverのバージョン違いかと思い同じバージョンのものをpipでインストールした。 78 79### 補足情報(FW/ツールのバージョンなど) 80普段使っているchromeのバージョン 81 103.0.5060.66(Official Build) (64 ビット) 82 83pipでインストールしたchoromedriver 84pip install chromedriver-binary==103.0.5060.53.0 85 86環境 87 88エディション Windows 10 Home 89バージョン 21H2 90 91 92Visual Studio Code 93 94バージョン: 1.68.1 (user setup) 95コミット: 30d9c6cd9483b2cc586687151bcbcd635f373630 96 日付: 2022-06-14T12:48:58.283Z 97Electron: 17.4.7 98Chromium: 98.0.4758.141 99Node.js: 16.13.0 100V8: 9.8.177.13-electron.0 101OS: Windows_NT x64 10.0.19044 102 103

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

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

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

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

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

BeatStar

2022/07/01 01:17

amazonについてはスクレイピングするより、専用のAPIを使うべきです。 確かAmazon APIなんていうものがあったはず… 専用のAPI以外での方法だと、後々揉める可能性がありますよ。
meg_

2022/07/01 11:46

seleniumのバージョンは何ですか?
guest

回答1

0

自己解決

解決しました。コメントくださった方ありがとうございました。

投稿2022/07/24 02:53

rattyo1208

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問