Python 学习之urllib模块---用于发送网络请求,获取数据

时间:2022-11-01 15:45:30

1.urllib

urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块。

(1)urllib.request用法

1)urlopen函数:用于打开一个URL(urlopen返回一个类文件对象,可以像文件一样操作)

例如: import urllib.request

web=urllib.request.urlopen('http://www.baidu.com')

content=web.read()

print (content.decode())

说明一下,此处用decode() 解码,是因为当时试了抓取中国天气网里的城市编号,发现抓取显示出来的都是十六进制的编码。现如今自己还是小菜鸟一      个,至于大学学的知识差不多也没记住多少,问了问度娘,捣腾出来这个,为此还去特意查了一下Unicode和其他编码如UTF-8的区别,Unicode是计算机的编码,是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。UTF-8的特点是对不同范围的字符使用不同长度的编码,相对于unicode来说,英文方面所占字符空间就少,节约空间,宽带。至于其他区别,还没深入,后面在慢慢了解。

当然,此处得到的结果,是打印出来baidu首页html页面的一些页面元素。

2)城市代码的抓取过程

天气网的城市代码信息比较复杂,么有给出城市代码的对应关系。提供的3个接口为:

http://m.weather.com.cn/data5/city.xml      获取的是省或者是直辖市的编号,如“01|北京,02|上海”等

http://m.weather.com.cn/data5/city%s(省编号,如01,02).xml      如city19.xml等,获取的是二级地区的编号

http://m.weather.com.cn/data5/city%s(二级编号,如19).xml      如city1901.xml,获取的是三级地区的编号

首先,先获取一下省或者直辖市的编号,代码如下:

Python 学习之urllib模块---用于发送网络请求,获取数据

去掉打印的注释, 运行结果如下:

Python 学习之urllib模块---用于发送网络请求,获取数据

今天先到这,明天继续!2016年8月31日