如何在python 3中使用urllib?

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还有一个不同之处:在我的例子中,resulttext变量的类型是而不是的类型,所以为了对其中的文本进行处理,我必须对其进行解码:

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