前提・実現したいこと
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を使用中です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 00:25
退会済みユーザー
2020/08/21 23:25
2020/08/24 03:00