【发布时间】:2019-04-20 20:20:42
【问题描述】:
我一直在使用 Coursera 完成关于 python 的在线课程(这不是家庭作业),并且在某些 url 的 urllib.request.urlopen 方面遇到了问题。对于硬编码到下面代码中的 url,命令 urllib.request.urlopen(serviceurl, context=ctx).read().decode() 超时。如果使用了另一个 url...比如使用了http://www.woot.com,则返回数据。
我已经在我所在位置的两台单独的 Ubuntu 机器上尝试过这个,它们都运行 18.04(默认为 3.6.7)和通过 Anaconda 运行的 3.7.3。 我什至重新安装了 Ubuntu,结果相同。
奇怪的是,如果我包含超时参数(例如,urllib.request.urlopen(serviceurl, timeout=1, context=ctx).read().decode()),则会返回数据。
此外,该程序在运行 3.6.4 的 macbook air 上成功运行(不管 url),没有超时参数
import urllib.request
import ssl
# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
address = input('Enter Locaton: ')
if len(address) < 1:
serviceurl = 'http://py4e-data.dr-chuck.net/comments_42.xml?'
else:
serviceurl = address
s = urllib.request.urlopen(serviceurl, context=ctx).read().decode()
print(s)
我似乎是唯一一个遇到这个问题的人,这让我很困惑。我刚刚开始熟悉python(C、C#、Java比较熟悉)。任何想法将不胜感激。
【问题讨论】:
标签: python-3.x urllib