I am just trying to fetch data from a live web by using the urllib module, so I wrote a simple example
Here is my code:
import urllib
sock = urllib.request.urlopen("")
htmlSource = sock.read()
sock.close()
print (htmlSource) But I got error like:
Traceback (most recent call last): File "D:\test.py", line 3, in <module> sock = urllib.request.urlopen("")
AttributeError: 'module' object has no attribute 'request' 8 Answers
You are reading the wrong documentation or the wrong Python interpreter version. You tried to use the Python 3 library in Python 2.
Use:
import urllib2
sock = urllib2.urlopen("")
htmlSource = sock.read()
sock.close()
print htmlSourceThe Python 2 urllib2 library was replaced by urllib.request in Python 3.
import requests
import urllib
link = ""
f = urllib.request.urlopen(link)
myfile = f.read()
writeFileObj = open('output.xml', 'wb')
writeFileObj.write(myfile)
writeFileObj.close() 1 In Python3 you can use urllib or urllib3
urllib:
import urllib.request
with urllib.request.urlopen(') as response: htmlSource = response.read()urllib3:
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', ')
htmlSource = r.dataMore details could be found in the urllib or python documentation.
This is what i use to get data from urls, its nice because you could save the file at the same time if you need it:
import urllib
result = urllib.urlretrieve("")
print open(result[0]).read()output:
'<!DOCTYPE html><body><iframe src="" allowtransparency="true" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" width="100%"></iframe></body></html>'Edit: urlretrieve works in python 2 and 3
4Make sure you import requests from urllib, then try this format, it worked for me:
from urllib import request
urllib.request.urlopen( ) I just queried the same question which is now over 5 years old.
Please note that the URL given is also old, so i substituted the python welcome page.
We can use the requests module in python 3.
I use python 3 and the solution is below:
import requests
r = requests.get(')
t = r.text
print(t)This works and is clean.
For python 3 the correct way should be:
import cv2
import numpy as np
import urllib.request
req = urllib.request.urlopen(')
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
img = cv2.imdecode(arr, -1) # 'Load it as it is'
cv2.imshow('image_name', img)
if cv2.waitKey() & 0xff == 27: quit()Here you can find the documentation related to urllib.request
Use this
import cv2 import numpy as np import urllib //import urllib using pip import requests // import requests using pip`enter code here` url = "write your url" while True: imgresp = urllib.request.urlopen(url) imgnp = np.array(bytearray(imgresp.read()),dtype=np.uint8) img = cv2.imdecode(imgnp,-1) cv2.imshow("test",img) cv2.waitKey('q') 1