Python urllib urlopen not working

I am just trying to fetch data from a live web using the urllib module, so I wrote a simple example

Here is my code:

import urllib

sock = urllib.request.urlopen("http://diveintopython.org/") 
htmlSource = sock.read()                            
sock.close()                                        
print (htmlSource)  

      

But I got an error like:

Traceback (most recent call last):
  File "D:\test.py", line 3, in <module>
    sock = urllib.request.urlopen("http://diveintopython.org/") 
AttributeError: 'module' object has no attribute 'request'

      

+8


source to share


6 answers


You are reading the wrong documentation or the wrong version of the Python interpreter. Have you tried using the Python 3 library in Python 2.

Using:



import urllib2

sock = urllib2.urlopen("http://diveintopython.org/") 
htmlSource = sock.read()                            
sock.close()                                        
print htmlSource

      

The Python 2 library has urllib2

been replaced
in Python 3. urllib.request

+17


source


import requests
import urllib

link = "http://www.somesite.com/details.pl?urn=2344"

f = urllib.request.urlopen(link)
myfile = f.read()

writeFileObj = open('output.xml', 'wb')
writeFileObj.write(myfile)
writeFileObj.close()

      



+5


source


This is what I use to get data from urls, it's good because you can save the file at the same time if you need it:

import urllib

result = urllib.urlretrieve("http://diveintopython.org/")

print open(result[0]).read()

      

output:

'<!DOCTYPE html><body style="padding:0; margin:0;"><iframe src="http://mcc.godaddy.com/park/pKMcpaMuM2WwoTq1LzRhLzI0" style="visibility: visible;height: 2000px;" allowtransparency="true" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" width="100%"></iframe></body></html>'

      

Edit: urlretrieve works in python 2 and 3

+2


source


In Python3, you can use urllib or urllib3

URLLIB:

import urllib.request
with urllib.request.urlopen('http://docs.python.org') as response:
    htmlSource = response.read()

      

urllib3:

import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'http://docs.python.org')
htmlSource = r.data

      

More details can be found in urllib or python .

+1


source


Make sure you import requests

from urllib

, then try this format, it worked for me:

from urllib import request
urllib.request.urlopen( )

      

-1


source


Use this import cv2 import numpy as np import urllib // import urllib using pip import requests // import requests using enter code here

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


source







All Articles