urllib.error.URLError: <urlopen error [Errno -2] Name or service not known>

urllib.error.URLError: <urlopen error [Errno -2] Name or service not known>

from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import re

random.seed(datetime.datetime.now())

def getLinks(articleUrl):
    html = urlopen("http://en.wikipedia.org"+articleUrl)
    bsObj = BeautifulSoup(html)
    return bsObj.find("div", {"id":"bodyContent"}).findAll("a",href = re.compile("^(/wiki/)((?!:).)*$"))

getLinks('http://en.wikipedia.org')

OS 是 Linux。上面的脚本吐出一个"urllib.error.URLError: "。查看了我在 google 上发现的解决此问题的多次尝试,但其中 none 解决了我的问题(尝试的解决方案包括更改环境变量并将名称服务器 8.8.8.8 添加到我的 resolv.conf 文件)。

您应该使用有效的 url 调用 getLinks():

>>> getLinks('/wiki/Main_Page')

此外,在你的函数中,你还应该在将响应内容传递给BeautifulSoup之前调用.read()来获取响应内容:

>>> html = urlopen("http://en.wikipedia.org" + articleUrl).read()