kaggle 内核:urllib.request.urlopen 不适用于任何 url

kaggle kernels: urllib.request.urlopen not working for any url

kaggle kernels 中处理 url 列表提取的最佳方法是什么?

我首先尝试使用 google.com 进行测试。

First Method: 使用 urllib.request

import urllib.request resp =  urllib.request.urlopen('http://www.google.com')

这导致 gai 错误和 urlopen 错误 [Errno -2] 名称或服务未知

Second Method:使用请求

import requests resp = requests.get('http://www.google.com')

这导致错误 gaierror:[Errno -3] 名称解析暂时失败和无法建立新连接:[Errno -3] 名称解析暂时失败。

import urllib.request
req = urllib.request.Request('http://www.google.com')
print (req)

try:
    response = urllib.request.urlopen(req)
    print (response)
except urllib.error.URLError as e:
    print (e.reason)
    print("something wrong")

输出:

<urllib.request.Request object at 0x7fed1d00c518>
[Errno -2] Name or service not known
something wrong

我尝试按照 Whosebug answer 的建议解析 DNS 解析。

解决此错误的方法是什么?为什么 urlopen 或请求在 kaggle 内核中不起作用?
我看到很多内核都有同样的错误 kernel 1 kernel 2 kernel 3.

这对您不起作用的原因是因为 Kaggle Kernels 当前无法访问互联网。因此,您无法在内核中进行需要网络连接的 API 调用。

编辑 2018 年 8 月:仅供参考,我们现在已经添加了对内核的互联网访问。 :) 您可以在编辑器中的 left-hand 边栏中启用它。

警告:您需要为您的内核启用 Internet 访问才能在其设置菜单中使用它。为了能够做到这一点,您必须通过手机在 Kaggle 上注册一次。