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

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

新規登録して質問してみよう
ただいま回答率
87.20%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

解決済

Pythonのrequests.get()関数でアクセスできないサイトがあります.

kuuuuu
kuuuuu

総合スコア1

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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

2回答

0評価

1クリップ

670閲覧

投稿2020/06/08 07:54

前提・実現したいこと

Pythonのrequests.get()関数でWebページをダウンロードしたいのですが,
エラーになるわけでもなくアクセスできないサイトがあります.

具体的にはこちらの通販サイトから,
https://www.asos.com/fila/fila-mini-dress-with-drawstring-waist-and-logo-front/prd/13843263

以下にある商品価格を取得したいと思っております.
<span data-id="current-price" data-bind="text: priceText(), css: {'product-price-discounted' : isDiscountedPrice }, markAndMeasure: 'pdp:price_displayed'" class="current-price product-price-discounted">£36.00</span>

どのようにすればよいでしょうか?
また,requests以外で使えるモジュールはありますか?

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

timeoutを設定した時のみ以下のエラーが出ますが,それ以外の時はずっと実行中になってしまいます.

Error

--------------------------------------------------------------------------- timeout Traceback (most recent call last) C:\Anaconda\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw) 383 # otherwise it looks like a programming error was the cause. --> 384 six.raise_from(e, None) 385 except (SocketTimeout, BaseSSLError, SocketError) as e: C:\Anaconda\lib\site-packages\urllib3\packages\six.py in raise_from(value, from_value) C:\Anaconda\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw) 379 try: --> 380 httplib_response = conn.getresponse() 381 except Exception as e: C:\Anaconda\lib\http\client.py in getresponse(self) 1320 try: -> 1321 response.begin() 1322 except ConnectionError: C:\Anaconda\lib\http\client.py in begin(self) 295 while True: --> 296 version, status, reason = self._read_status() 297 if status != CONTINUE: C:\Anaconda\lib\http\client.py in _read_status(self) 256 def _read_status(self): --> 257 line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") 258 if len(line) > _MAXLINE: C:\Anaconda\lib\socket.py in readinto(self, b) 588 try: --> 589 return self._sock.recv_into(b) 590 except timeout: C:\Anaconda\lib\site-packages\urllib3\contrib\pyopenssl.py in recv_into(self, *args, **kwargs) 308 else: --> 309 return self.recv_into(*args, **kwargs) 310 C:\Anaconda\lib\site-packages\urllib3\contrib\pyopenssl.py in recv_into(self, *args, **kwargs) 306 if not util.wait_for_read(self.socket, self.socket.gettimeout()): --> 307 raise timeout('The read operation timed out') 308 else: timeout: The read operation timed out During handling of the above exception, another exception occurred: ReadTimeoutError Traceback (most recent call last) C:\Anaconda\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies) 448 retries=self.max_retries, --> 449 timeout=timeout 450 ) C:\Anaconda\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw) 637 retries = retries.increment(method, url, error=e, _pool=self, --> 638 _stacktrace=sys.exc_info()[2]) 639 retries.sleep() C:\Anaconda\lib\site-packages\urllib3\util\retry.py in increment(self, method, url, response, error, _pool, _stacktrace) 366 if read is False or not self._is_method_retryable(method): --> 367 raise six.reraise(type(error), error, _stacktrace) 368 elif read is not None: C:\Anaconda\lib\site-packages\urllib3\packages\six.py in reraise(tp, value, tb) 685 raise value.with_traceback(tb) --> 686 raise value 687 C:\Anaconda\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw) 599 body=body, headers=headers, --> 600 chunked=chunked) 601 C:\Anaconda\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw) 385 except (SocketTimeout, BaseSSLError, SocketError) as e: --> 386 self._raise_timeout(err=e, url=url, timeout_value=read_timeout) 387 raise C:\Anaconda\lib\site-packages\urllib3\connectionpool.py in _raise_timeout(self, err, url, timeout_value) 305 if isinstance(err, SocketTimeout): --> 306 raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value) 307 ReadTimeoutError: HTTPSConnectionPool(host='www.asos.com', port=443): Read timed out. (read timeout=10) During handling of the above exception, another exception occurred: ReadTimeout Traceback (most recent call last) <ipython-input-16-e3d95d8c78cb> in <module> 1 url = 'https://www.asos.com/fila/fila-mini-dress-with-drawstring-waist-and-logo-front/prd/13843263' ----> 2 res = requests.get(url, timeout = 10) C:\Anaconda\lib\site-packages\requests\api.py in get(url, params, **kwargs) 73 74 kwargs.setdefault('allow_redirects', True) ---> 75 return request('get', url, params=params, **kwargs) 76 77 C:\Anaconda\lib\site-packages\requests\api.py in request(method, url, **kwargs) 58 # cases, and look like a memory leak in others. 59 with sessions.Session() as session: ---> 60 return session.request(method=method, url=url, **kwargs) 61 62 C:\Anaconda\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 531 } 532 send_kwargs.update(settings) --> 533 resp = self.send(prep, **send_kwargs) 534 535 return resp C:\Anaconda\lib\site-packages\requests\sessions.py in send(self, request, **kwargs) 644 645 # Send the request --> 646 r = adapter.send(request, **kwargs) 647 648 # Total elapsed time of the request (approximately) C:\Anaconda\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies) 527 raise SSLError(e, request=request) 528 elif isinstance(e, ReadTimeoutError): --> 529 raise ReadTimeout(e, request=request) 530 else: 531 raise ReadTimeout: HTTPSConnectionPool(host='www.asos.com', port=443): Read timed out. (read timeout=10)

該当のソースコード

Python

url = 'https://www.asos.com/fila/fila-mini-dress-with-drawstring-waist-and-logo-front/prd/13843263' res = requests.get(url, timeout = 10)

試したこと

申し訳ないのですが,初心者で試行錯誤の余地がないため,これといって試すことのできたものはありません.
urllib.requests()も同様に使えませんでした.

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

Python 3, chromeでJupyterLabを用いています.
同じウィンドウ上の別のタブでは当該URLを開くことは可能でした.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

javahack

2020/06/08 23:17

スクレイピング対策しているということは、規約で禁止している可能性があります。(軽く探してみましたが規約は見つけられませんでした。) 規約で禁止している行為を繰り返した場合、最悪訴えられることもありますので、注意してください。
kuuuuu

2020/06/09 04:10

ご指摘ありがとうございます.規約をよく読んでからまた考え直すことにいたします.

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

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