Python urllib urlopen无法正常工作

时间:2014-09-16 07:36:55

标签: python urllib

我只是想通过使用urllib模块从实时网络中获取数据,所以我写了一个简单的例子

这是我的代码:

import urllib

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

但我得到的错误如下:

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 个答案:

答案 0 :(得分:18)

您正在阅读错误的文档或错误的Python解释器版本。您试图在Python 2中使用Python 3库。

使用:

import urllib2

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

Python 3 urllib2 library已被Python 3中的urllib.request取代。

答案 1 :(得分:6)

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()

答案 2 :(得分:3)

这是我用来从网址获取数据的方法,很不错,因为你可以在需要的时候同时保存文件:

import urllib

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

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

输出:

'<!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>'

编辑:urlretrieve在python 2和3中工作

答案 3 :(得分:2)

Python3 中,您可以使用 urllib 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

可以在urllibpython文档中找到更多详细信息。

答案 4 :(得分:1)

对于python 3,正确的方法应该是:

geom_text(aes(
            x=año_new, y=100,
            label = paste0(round(Promedio), "\n(", round(Desviacion), ")")
        ),
        hjust=0,
        position=position_dodge(0.9)
    )

在这里您可以找到与urllib.request相关的文档

答案 5 :(得分:0)

请确保您从requests导入了urllib,然后尝试使用这种格式,它对我有用:

from urllib import request
urllib.request.urlopen( )

答案 6 :(得分:0)

我刚刚问了一个已经超过5岁的问题。

请注意,给出的URL也很旧,因此我替换了 python欢迎页面

我们可以在 python 3 中使用请求模块

我使用 python 3 ,解决方案如下:

import requests

r = requests.get('https://www.python.org/')
t = r.text

print(t)

这有效且干净。

答案 7 :(得分:-1)

使用此     导入cv2     导入numpy为np     import urllib //使用pip导入urllib     导入请求//使用pip enter code here导入请求     url =“写您的网址”     而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')