AttributeError:'module'对象没有属性'urlopen'

时间:2010-10-19 14:59:01

标签: python python-3.x urllib

我正在尝试使用Python下载网站的HTML源代码,但我收到此错误。

  

追踪(最近的呼叫最后):
  文件   “C:\用户\ Sergio.Tapia \文件\的NetBeansProjects \ DICParser \ SRC \ WebDownload.py”,   第3行,在       file = urllib.urlopen(“http://www.python.org”)   AttributeError:'module'对象没有   属性'urlopen'

我在这里关注指南:http://www.boddie.org.uk/python/HTML.html

import urllib

file = urllib.urlopen("http://www.python.org")
s = file.read()
f.close()

#I'm guessing this would output the html source code?
print(s)

我正在使用Python 3,感谢您的帮助!

13 个答案:

答案 0 :(得分:187)

这适用于Python 2.x。

对于Python 3,请查看docs

import urllib.request

with urllib.request.urlopen("http://www.python.org") as url:
    s = url.read()
    # I'm guessing this would output the html source code ?
    print(s)

答案 1 :(得分:18)

Python 2 + 3兼容解决方案是:

import sys

if sys.version_info[0] == 3:
    from urllib.request import urlopen
else:
    # Not Python 3 - today, it is most likely to be Python 2
    # But note that this might need an update when Python 4
    # might be around one day
    from urllib import urlopen


# Your code where you can use urlopen
with urlopen("http://www.python.org") as url:
    s = url.read()

print(s)

答案 2 :(得分:13)

import urllib.request as ur
s = ur.urlopen("http://www.google.com")
sl = s.read()
print(sl)

在Python v3中," urllib.request"是一个单独的模块,因此" urllib"不能在这里使用。

答案 3 :(得分:4)

要获取' dataX = urllib.urlopen (网址).read()'在python 3 中工作(这对于python 2 来说是正确的)你必须改变2件小事。

1: urllib语句本身(在中间添加.request):

dataX = urllib.request.urlopen(url).read()

2:之前的导入语句(从' import urlib'更改为:

import urllib.request

它应该在python3中工作:)

答案 4 :(得分:3)

import urllib.request as ur

filehandler = ur.urlopen ('http://www.google.com')
for line in filehandler:
    print(line.strip())

答案 5 :(得分:2)

更改两行:

import urllib.request #line1

#Replace
urllib.urlopen("http://www.python.org")
#To
urllib.request.urlopen("http://www.python.org") #line2

如果出现错误403:禁止错误,请尝试以下操作:

siteurl = "http://www.python.org"

req = urllib.request.Request(siteurl, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'})
pageHTML = urllib.request.urlopen(req).read()

希望您的问题得到解决。

答案 6 :(得分:1)

对于python 3,请尝试如下操作:

import urllib.request
urllib.request.urlretrieve('http://crcv.ucf.edu/THUMOS14/UCF101/UCF101/v_YoYo_g19_c02.avi', "video_name.avi")

它将视频下载到当前工作目录

I got help from HERE

答案 7 :(得分:1)

python3的解决方案:

from urllib.request import urlopen

url = 'http://www.python.org'
file = urlopen(url)
html = file.read()
print(html)

答案 8 :(得分:0)

您在python2.x中使用的代码,您可以像这样使用:

from urllib.request import urlopen
urlopen(url)

顺便说一句,建议另一个称为请求的模型更友好地使用,您可以使用pip安装它,并像这样使用:

import requests
requests.get(url)
requests.post(url)

我认为它很容易使用,我也是初学者。...哈哈

答案 9 :(得分:0)

一种可能的方法:

import urllib
...

try:
    # Python 2
    from urllib2 import urlopen
except ImportError:
    # Python 3
    from urllib.request import urlopen

答案 10 :(得分:0)

使用六个模块使您的代码在 python2 python3

之间兼容
urllib.request.urlopen("<your-url>")```

答案 11 :(得分:-1)

import urllib
import urllib.request
from bs4 import BeautifulSoup


with urllib.request.urlopen("http://www.newegg.com/") as url:
    s = url.read()
    print(s)
soup = BeautifulSoup(s, "html.parser")
all_tag_a = soup.find_all("a", limit=10)

for links in all_tag_a:
    #print(links.get('href'))
    print(links)

答案 12 :(得分:-3)

imgResp = urllib3.request.RequestMethods.urlopen(url)

在使用 urlopen 之前添加此 RequestMethods