python 抓取 58的省市数据

网上提供的数据无法保证数据的全面,索性直接抓取58的数据,这样最保险了!

#!/bin/env python
#encoding:utf8
#
# 抓取58的城市
# author songmw
#
from pinyin import pinyin
from pprint import pprint
import urllib
import re
import sys
	
def getHtml():
	urlItem = urllib.urlopen('http://www.58.com/chuzu/changecity/')
	html = urlItem.read()
	urlItem.close()
	html = html.decode('utf8').encode('utf8')

	return html

if __name__ == '__main__' :

	html = getHtml()

	# print(html)
	# 获取所有的省份
	rc = re.compile('\<dt.*?\>(.*)\<\/dt\>')
	prov_list = rc.findall(html)

	# 获取所有的市 
	rc = re.compile('\<dd.*?\>(.*?)\<\/dd\>')
	city_list = rc.findall(html)

	# data
	data = []
	data.append({"en":"beijing", "cn":"北京"})
	data.append({"en":"tianjin", "cn":"天津"})
	data.append({"en":"shanghai", "cn":"上海"})
	data.append({"en":"chongqing", "cn":"重庆"})


	for k in range(len(prov_list)):
		prov_dict = {}
		prov_dict['en'] = pinyin.get(prov_list[k])
		prov_dict['cn'] = prov_list[k]

		if k == 0 or k == len(prov_list)-1:
			continue

		# 获取该省下的所有市 
		rc = re.compile('\<a.*?\>(.*?)\<\/a\>')
		item_city = rc.findall(city_list[k])

		prov_dict['city'] = item_city
		data.append(prov_dict)


	for v in data:
		print('*' * 10)
		print("该省%s(%s)"% (v['cn'], v['en']))

		if v.has_key('city'):

			print("旗下有的城市:")
			for city_name in v['city']:
				print(city_name)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值