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

我写了一段代码,在Python2.7中运行良好,使用的是urllib2.它会进入互联网上的页面(需要授权),并从该页面获取信息.

对我来说,真正的问题是我不能让我的代码在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()

推荐答案

谢天谢地,我终于明白了它的工作原理.

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

Python-3.x相关问答推荐

字符串块数组:如何根据一个数组中的元素对另一个数组中的元素进行分组

Numba编译时间呈指数级增长--可以像C编译器一样配置优化级别吗?

如何查找以开头并替换的字符串

如何使用`re.findall`从字符串中提取数据

为什么 numpy 的 `np.char.encode` 会将一个空的 unicode 数组变成一个空的 `float64` 数组?

使用条件参数为 super() 调用 __init__

SMTP 库 Python3:不太安全的应用程序访问

spaCy 中的匹配模式返回空结果

将字典列表展平为数据框列

如何并行化文件下载?

在两个数据框之间查找相等的列

判断对 python 3 支持的要求

Python3四舍五入到最接近的偶数

是否有与 Laravel 4 等效的 python?

在 Pandas 数据框中显示对图

python asyncio - 如何等待取消的屏蔽任务?

Python的max函数有多高效

在 WSL (Ubuntu) 中为 python3 安装 venv

如何等待 create_task() 创建的任务完成?

计算两个文件的行差异的最有效方法是什么?