How to use urllib in python 3?
这是我在python 3中使用urlib的问题。
我写了一段代码,它在Python2.7中很好地工作,并且正在使用urllib2。它会转到Internet上的页面(需要授权),并从该页面获取信息。
对我来说真正的问题是,我不能让我的代码在Python3.4中工作,因为没有urlib2,而且urlib的工作方式也不同;即使经过几个小时的谷歌和阅读,我还是一无所获。所以如果有人能帮我解决这个问题,我会非常感谢你的帮助。
这是我的代码:
1 2 3 4 5 6 | request = urllib2.Request('http://mysite/admin/index.cgi?index=127') base64string = base64.encodestring('%s:%s' % ('login', 'password')).replace(' ', '') request.add_header("Authorization","Basic %s" % base64string) result = urllib2.urlopen(request) resulttext = result.read() |
感谢你们,我终于找到了它的工作方式。这是我的代码:
1 2 3 4 5 | request = urllib.request.Request('http://mysite/admin/index.cgi?index=127') base64string = base64.b64encode(bytes('%s:%s' % ('login', 'password'),'ascii')) request.add_header("Authorization","Basic %s" % base64string.decode('utf-8')) result = urllib.request.urlopen(request) resulttext = result.read() |
号
毕竟,Urllib还有一个不同之处:在我的例子中,
1 | text = resulttext.decode(encoding='utf-8',errors='ignore') |
那Urllib.request呢?它似乎有你需要的一切。
1 2 3 4 5 6 7 8 | import base64 import urllib.request request = urllib.request.Request('http://mysite/admin/index.cgi?index=127') base64string = bytes('%s:%s' % ('login', 'password'), 'ascii') request.add_header("Authorization","Basic %s" % base64string) result = urllib.request.urlopen(request) resulttext = result.read() |
在python 3中使用urllib,下面是我的代码:
1 2 3 4 5 | from urllib.request import urlopen url = 'https://someurl/' page = urlopen(url) html = page.read() |
。