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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Beautiful Soup

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

Python 3.x

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

Python

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

Q&A

解決済

1回答

4614閲覧

pythonでアマゾンスクレイピングする際に HTTP Error 503: Service Unavailableとなる

toshi59

総合スコア1

Beautiful Soup

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

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/08/21 00:03

前提・実現したいこと

AmazonのASINを用いて各ページの情報(価格、送料、販売者、等)をPythonで一括取得できるようにしようとしています。
urllib.request.urlopenで指定のURLにアクセスしようとすると「503: Service Unavailable」というエラーになってしまいます。
※実行のたびに、問題なく読み出せる場合と、このエラーが発生する場合があり困っています。
この場合、どういった対応が必要でしょうか、ご教授いただければ幸いです。

スクレイピング始めたばかりで、初歩的な質問になるかもしれませんが、何卒宜しくお願い致します。

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

--------------------------------------------------------------------------- HTTPError Traceback (most recent call last) <ipython-input-7-5ca2b005749a> in <module>() 7 url = 'https://www.amazon.co.jp/gp/offer-listing/' + ASIN_id + '/ref=olp_page_1?ie=UTF8&f_all=true' 8 print(url) ----> 9 html = urllib.request.urlopen(url) 10 soup = BeautifulSoup(html, 'lxml') 11 time.sleep(2) C:\ProgramData\Anaconda3\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 221 else: 222 opener = _opener --> 223 return opener.open(url, data, timeout) 224 225 def install_opener(opener): C:\ProgramData\Anaconda3\lib\urllib\request.py in open(self, fullurl, data, timeout) 530 for processor in self.process_response.get(protocol, []): 531 meth = getattr(processor, meth_name) --> 532 response = meth(req, response) 533 534 return response C:\ProgramData\Anaconda3\lib\urllib\request.py in http_response(self, request, response) 640 if not (200 <= code < 300): 641 response = self.parent.error( --> 642 'http', request, response, code, msg, hdrs) 643 644 return response C:\ProgramData\Anaconda3\lib\urllib\request.py in error(self, proto, *args) 568 if http_err: 569 args = (dict, 'default', 'http_error_default') + orig_args --> 570 return self._call_chain(*args) 571 572 # XXX probably also want an abstract factory that knows when it makes C:\ProgramData\Anaconda3\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args) 502 for handler in handlers: 503 func = getattr(handler, meth_name) --> 504 result = func(*args) 505 if result is not None: 506 return result C:\ProgramData\Anaconda3\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs) 648 class HTTPDefaultErrorHandler(BaseHandler): 649 def http_error_default(self, req, fp, code, msg, hdrs): --> 650 raise HTTPError(req.full_url, code, msg, hdrs, fp) 651 652 class HTTPRedirectHandler(BaseHandler): HTTPError: HTTP Error 503: Service Unavailable

該当のソースコード

import urllib.request, urllib.error import time ASIN_id = 'B00M7RCXB8' info = [] url = 'https://www.amazon.co.jp/gp/offer-listing/' + ASIN_id + '/ref=olp_page_1?ie=UTF8&f_all=true' print(url) html = urllib.request.urlopen(url) soup = BeautifulSoup(html, 'lxml') time.sleep(2) for ele in soup.find_all("div", class_="a-row a-spacing-mini olpOffer"): info.append(1)

試したこと

PrintしたURLをブラウザで直接たたくと普通に表示されます。

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

Windows10, Python3.6.5を使用中です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

この場合、どういった対応が必要でしょうか、ご教授いただければ幸いです。

諦めましょう。Amazonはスクレイピングを認めていません。

この利用許可には、アマゾンサービスまたはそのコンテンツの転売および商業目的での利用、製品リスト、解説、価格などの収集と利用、アマゾンサービスまたはそのコンテンツの二次的利用、第三者のために行うアカウント情報のダウンロードとコピーやその他の利用、データマイニング、ロボットなどのデータ収集・抽出ツールの使用は、一切含まれません。(利用規約より)

投稿2020/08/21 00:05

maisumakun

総合スコア145184

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

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

toshi59

2020/08/21 00:25

禁止されているんですね、失礼しました。そこまで調べられておりませんでした。 ご回答いただきありがとうございます。
dameo

2020/08/21 23:25

利用規約なので、同意してる場合に有効なだけだと思いますけどね。 実際の裁判でどうなるかまでの責任は持てません。
toshi59

2020/08/24 03:00

dameoさま ありがとうございます。この辺りは私もいろいろ調査してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問