1、urllib2是python自带的模块,在python3.x中被改为urllib.request,如
[python] view plaincopy在CODE上查看代码片派生到我的代码片
<span style="font-size:12px;">url = "http://music.baidu.com/album/all?order=time&style=pop"
html = urllib.request.urlopen(url).read()
</span>
2、raw_input 和 input
在 Python 版本 2.x 中,raw_input() 会从标准输入(sys.stdin)读取一个输入并返回一个字符串,且尾部的换行符从末尾移除
[python] view plaincopy在CODE上查看代码片派生到我的代码片
<span style="font-size:12px;">>>>quest = raw_input("What is your quest? ")
What is your quest? To seek the holy grail.
</span>
与之不同,Python 2.x 中的 input() 函数需要的是一个有效的 Python 表达式,比如 3+5
最初,曾有人建议将 input() 和 raw_input() 从 Python 内置的名称空间一并删除,因此就需要进行导入来获得输入能力。这从方法上就不对;因为,简单键入:
>>>quest = input("What is your quest?")
将会变为:
[python] view plaincopy在CODE上查看代码片派生到我的代码片
<span style="font-size:12px;">>>>import sys
>>>print("What is your quest?")
>>>quest = sys.stdin.readline()
</span>
对于一个简单输入而言,这太过繁琐,并且对于一个新手,这未免太难理解。往往需要向他们讲述模块 和导入 究竟是怎么回事、字符串输出以及句点操作符又是如何工作的(如此麻烦的话,与 Java™ 语言就没什么差别了)。所以,在 Python 3 内,将 raw_input() 重命名为 input(),这样一来,无须导入也能从标准输入获得数据了。如果您需要保留版本 2.x 的 input() 功能,可以使用 eval(input()),效果基本相同。
3、can't use a string pattern on a bytes-like object
3.0现在的参数更改了,现在读取的是bytes-like的,但参数要求是chart-like的,故定义pattern的时候在前面加一个小b,表示要操作的对象是bytes类型就可以了,,如
[python] view plaincopy在CODE上查看代码片派生到我的代码片
url = "http://music.baidu.com/album/all?order=time&style=pop"
html = urllib.request.urlopen(url).read()
uri = re.findall(b'/song/d+',html,re.M)