2

Python 3.1、urllib、jsonでウェブサイトのURLを開こうとするとエラーが発生します

urllib.error.URLError:

これがコードです。最初のウェブサイトは正常に読み込まれます。2つ目

import json
import urllib.request
import urllib.parse
import util

# This one works fine
response = urllib.request.urlopen('http://python.org/')
html = response.read()
print(html)

# parms - CSV filename, company, ....

p_filename = "c:\\temp\\test.csv"

jg_token = "zzzzzzzzzzzzzzzzzzzzzzzzz"
jg_proto = "https://"
jg_webst = "www.jigsaw.com/rest/"

jg_cmd_searchContact = "searchContact.json"

jg_key_companyName = "companyName"
jg_key_levels      = "levels"
jg_key_departments = "departments"

jg_args = {
        "token":jg_token,
        jg_key_companyName: "Technical Innovations",
        jg_key_departments: "HR"
        }

jg_url = jg_proto + jg_webst + jg_cmd_searchContact + "?" + urllib.parse.urlencode(jg_args)

    # This one generates teh error
result = json.load(urllib.request.urlopen(jg_url))

urllib.error.URLError:

ファイル"c:\ dev \ xdev \ PyJigsaw \ searchContact.py"、46行目、結果= json.load(urllib.request.urlopen(jg_url))

ファイル"c:\ dev \ tdev \ Python31 \ Lib \ urllib \ request.py"、行121、urlopen return _opener.open(url、data、timeout)

ファイル"c:\ dev \ tdev \ Python31 \ Lib \ urllib \ request.py"、349行目、オープンレスポンス= self._open(req、data)

ファイル"c:\ dev \ tdev \ Python31 \ Lib \ urllib \ request.py"、行367、_open'_open'、req)

ファイル"c:\ dev \ tdev \ Python31 \ Lib \ urllib \ request.py"、行327、_call_chain result = func(* args)

ファイル"c:\ dev \ tdev \ Python31 \ Lib \ urllib \ request.py"、行1098、https_open return self.do_open(http.client.HTTPSConnection、req)

ファイル"c:\ dev \ tdev \ Python31 \ Lib \ urllib \ request.py"、1075行目、do_openでURLError(err)を発生させます

4

2 に答える 2

1

タイトルとタグ、そしておそらく質問の本文を編集してください。これは JSON とは関係なく、すべて Windows と関係があります。また、urllib よりも低いレベルにあります。(おそらく SSL コードで) 蒸留:

次のアプローチはいずれも Python 3.1.2 for Vista では失敗しますが、Linux (Python 3.1.3) では問題なく動作します。

print( HTTPSConnection(hostname).request('GET',url).getresponse().read() )
print( urllib.request.urlopen('https://'+hostname+url).read() )

SSL を使用しないように変更すると、Windows で正常に動作します。

print( HTTPConnection(hostname).request('GET',url).getresponse().read() )
print( urllib.request.urlopen('http://'+hostname+url).read() )
于 2011-03-24T16:28:43.770 に答える
1

Vista では、Python 3.1.2 から Python 3.2 にアップグレードしたばかりで、これはもはや問題ではありません。以下は問題なく動作するようになりました:

print( urllib.request.urlopen('https://'+hostname+url).read() )

于 2011-03-24T17:23:57.123 に答える