如何在python 3中使用urllib?

时间:2014-07-08 14:54:13

标签: python-3.x urllib

这是我在python 3中使用urllib的问题。

我编写了一段在Python 2.7中运行良好且使用urllib2的代码。它会转到Internet上的页面(需要授权)并从该页面抓取信息。

对我来说真正的问题是我无法使我的代码在python 3.4中工作,因为没有urllib2,而urllib的工作方式不同;即使经过几个小时的谷歌搜索和阅读,我什么也没得到。所以,如果有人能帮助我解决这个问题,我真的很感激帮助。

这是我的代码:

    request = urllib2.Request('http://mysite/admin/index.cgi?index=127')
    base64string = base64.encodestring('%s:%s' % ('login', 'password')).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)
    result = urllib2.urlopen(request)
    resulttext = result.read()

3 个答案:

答案 0 :(得分:8)

谢天谢地,我们终于想出了它的运作方式。 这是我的代码:

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变量的类型为<bytes>而不是<str>,所以要对其中的文字做一些事情我必须解码它:

text = resulttext.decode(encoding='utf-8',errors='ignore')

答案 1 :(得分:7)

urllib.request怎么样?它似乎拥有你需要的一切。

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

答案 2 :(得分:0)

在python 3中使用urllib,这是我的代码:

from urllib.request import urlopen

url = 'https://someurl/'
page = urlopen(url)
html = page.read()