2016-10-18 7 views
0

私はhttp://www.crummy.com/software/BeautifulSoup/urllib.request.urlopen()URLError

## all imports 
from IPython.display import HTML 
import numpy as np 
import urllib.request, urllib.error 
import bs4 #this is beautiful soup 
import time 
import operator 
import socket 
import pickle 
import re # regular expressions 

from pandas import Series 
import pandas as pd 
from pandas import DataFrame 

import matplotlib 
import matplotlib.pyplot as plt 
%matplotlib inline 

import seaborn as sns 
sns.set_context("talk") 
sns.set_style("white") 

from secret import *  
url = 'http://www.crummy.com/software/BeautifulSoup/' 
source = urllib.request.urlopen(url).read() 
print(source) 

を開こうとした。しかし、それはエラーを返したが、私の周りで検索しましたが、どの解決策を見つけることができませんでした。それは他のサイトにも役立ちました。

SSLEOFError        Traceback (most recent call last) 
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 
    1253    try: 
-> 1254     h.request(req.get_method(), req.selector, req.data, headers) 
    1255    except OSError as err: # timeout error 

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 
    1254     h.request(req.get_method(), req.selector, req.data, headers) 
    1255    except OSError as err: # timeout error 
-> 1256     raise URLError(err) 
    1257    r = h.getresponse() 
    1258   except: 

URLError: <urlopen error EOF occurred in violation of protocol (_ssl.c:645)> 

SSLに何か問題がありますなぜおかげで、

答えて

0

サイトhttp://www.crummy.com/software/BeautifulSoup/が訪問時にSSLを使用してhttpsにリダイレクトするということは説明しています。 SSLEOFErrorは、基礎となるSSL接続が突然終了したことを意味します。実際に私にとってうまくいっているという事実のために、あなたのネットワークは意図したとおりに動作していると確信していますか?あなたは、SSLに問題をもたらす何らかの種類のプロキシの背後に座っているかもしれません(例えば、プロキシが接続を傍受するルート証明書がないためにSSL接続を許可しないかもしれません)。

あなたにもカスタムのSSLコンテキスト(パイソン> = 2.7.9/3.4.3)を追加することにより、証明書を無視しようとすることができます:それはあなたの問題を解決するかどうか

import ssl 

context = ssl.create_default_context() 
context.check_hostname = False 
context.verify_mode = ssl.CERT_NONE 

urllib.requests.urlopen("https://the.url/path", context=context).read() # ... 

はしかし、私はわかりません証明書がチェックされる前であってもエラーが発生する可能性があるためです(例えば、潜在的なプロキシがSSL接続を破棄する場合)。

サイドノート/推奨:requestsというもう1つのPythonモジュールがあり、HTTPリクエストをさらに簡単にすることができます。

+0

私は 'http:// python.org'のような他のサイトを試しましたが、うまくいきました。 – paulmassimo

+0

私はそれが別のエラー 'gaierror Traceback(最新の最後の呼び出し)を思いついてあなたの方法を試しました /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py do_open(self、 http_class、REQ、** http_conn_args) 1253試み: - > 1254 h.request(req.get_method()、req.selector、req.data、ヘッダ) URLError: ' – paulmassimo

+0

私には、あなたの基盤となるシステムに何か「間違った」ものがあるようです。あなたは何らかのプロキシの背後にいるのではないと確信していますか?あなたのOSはネットワーク関連の細かい作業をしていますか?他の誰かが別の提案をしているかもしれません。 (私はあなたの質問にあなたが与えたURLにあなたと私の両方のソリューションをテストしましたが、それはうまくいきました。) – mxscho

関連する問題