AttributeError: 'module' object has no attribute 'urlopen'

梦想的初衷 提交于 2019-11-26 03:49:57

问题


I\'m trying to use Python to download the HTML source code of a website but I\'m receiving this error.

Traceback (most recent call last):  
    File \"C:\\Users\\Sergio.Tapia\\Documents\\NetBeansProjects\\DICParser\\src\\WebDownload.py\", line 3, in <module>
     file = urllib.urlopen(\"http://www.python.org\")
AttributeError: \'module\' object has no attribute \'urlopen\'

I\'m following the guide here: 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)

I\'m using Python 3.


回答1:


This works in Python 2.x.

For Python 3 look in the 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)



回答2:


A Python 2+3 compatible solution is:

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)



回答3:


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

In Python v3 the "urllib.request" is a module by itself, therefore "urllib" cannot be used here.




回答4:


To get 'dataX = urllib.urlopen(url).read()' working in python3 (this would have been correct for python2) you must just change 2 little things.

1: The urllib statement itself (add the .request in the middle):

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

2: The import statement preceding it (change from 'import urlib' to:

import urllib.request

And it should work in python3 :)




回答5:


import urllib.request as ur

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



回答6:


For python 3, try something like this:

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

It will download the video to the current working directory

I got help from HERE




回答7:


Solution for python3:

from urllib.request import urlopen

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



回答8:


your code used in python2.x, you can use like this:

from urllib.request import urlopen
urlopen(url)

by the way , suggest another model called requests is more friendly to use, you can use pip install it, and use like this:

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

I thought it is easily to use, i am beginner too....hahah




回答9:


One of the possible way to do it:

import urllib
...

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



回答10:


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)


来源:https://stackoverflow.com/questions/3969726/attributeerror-module-object-has-no-attribute-urlopen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!