更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

自学Python编程【第四十四节】查天气(4)

  • 发布:Python培训
  • 来源:Crossin的编程教室
  • 时间:2019-03-04 14:57

欢迎大家来到达内自学Python编程教室,在上一讲我们已经可以查询天气了,但是是不是有人对城市代码的查询还感到不满意呢?今天我们就这里的内容再跟大家深入讲解一下,了解一下城市代码的抓取过程,也会让你对网页抓取有更深的理解哦。

自学Python编程【第四十四节】查天气(4)

天气网的城市代码信息结构比较复杂,所有代码按层级放在了很多xml为后缀的文件中。而这些所谓的“xml”文件又不符合xml的格式规范,导致在浏览器中无法显示,给我们的抓取又多加了一点难度。

首先,抓取省份的列表:

url1 = 'http://m.weather.com.cn/data5/city.xml'

content1 = urllib2.urlopen(url1).read()

provinces = content1.split(',')

输出content1可以查看全部省份代码:

01|北京,02|上海,03|天津,...

对于每个省,抓取城市列表:

url = 'http://m.weather.com.cn/data3/city%s.xml'

for p in provinces:

p_code = p.split('|')[0]

url2 = url % p_code

content2 = urllib2.urlopen(url2).read()

cities = content2.split(',')

输出content2可以查看此省份下所有城市代码:

1901|南京,1902|无锡,1903|镇江,...

再对于每个城市,抓取地区列表:

for c in cities[:3]:

c_code = c.split('|')[0]

url3 = url % c_code

content3 = urllib2.urlopen(url3).read()

districts = content3.split(',')

content3是此城市下所有地区代码:

190101|南京,190102|溧水,190103|高淳,...

最后,对于每个地区,我们把它的名字记录下来,然后再发送一次请求,得到它的最终代码:

for d in districts:

d_pair = d.split('|')

d_code = d_pair[0]

ame = d_pair[1]

url4 = url % d_code

content4 = urllib2.urlopen(url4).read()

code = content4.split('|')[1]

name和code就是我们最终要得到的城市代码信息。它们格式化到字符串中,最终保存在文件里:

line = " '%s': '%s',\n" % (name, code)

result += line

同时你也可以输出它们,以便在抓取的过程中查看进度:

print name + ':' + code

自学Python编程【第四十四节】查天气(4)

如果你只是想抓几个测试一下,并不用全部抓下来,在provices后面加上[:3],抓3个省的试试看就好了。

恭喜你在Python自学的道路上又坚持了一天,相信到今天为止,你可以毫无压力地跟别人说查询天气太简单了,一串代码的事!那你了解完了如何用Python去查询天气,那你可以查询下别的吗?比如火车票呢?思考一下,并试着动手实践一下吧!更多Python相关的精彩内容,尽在达内Python培训机构官网,敬请关注!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:自学Python编程【第四十三节】查天气(3)
下一篇:自学Python编程【第四十五节】面向对象(1)

【Git第八节】移除文件

【Python实战】四行Python代码就能知道你那的天气,你敢信?

Python实战【用Python写游戏第十三节】exe打包

Python实战【用Python写游戏第十二节】屡败屡战

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省