不能总是授人以鱼,今天把实现的方式也给大家列出来!
实现语言用的是python。python刚开始学两周,有不好的地方,各位兄台别笑。
不啰嗦了,直接贴。
下面是数据库的部分封装
# -*- coding: utf-8 -*-
import pymysql
'db module'
__author__ = 'liulaosan'
class DbHelper(object):
def __init__(self, host='127.0.0.1', user='root', password="",
database=None, port=3306):
self.database = database
self.port = port
self.host = host
self.user = user
self.password = password
self.conn = None
self.cur = None
self.connect()
def connect(self):
self.conn = pymysql.connect(self.host, self.user, self.password, self.database, self.port, charset="utf8")
self.cur = self.conn.cursor()
return self
def execute(self, sql):
try:
self.cur.execute(sql)
except Exception as e:
raise e
return self
def save(self):
try:
self.conn.commit()
except Exception as e:
self.conn.rollback()
def update(self):
self.save()
def select(self):
try:
result = self.cur.fetchall()
except Exception as e:
raise e
return result
def close(self):
self.cur.close()
self.conn.close()
if __name__ == '__main__':
db = DbHelper('192.168.0.128', 'root', 'root', 'python')
result = db.execute("select * from cms_areas").select()
print(result)
得到地区用接口是从百度里面找到的,用着还可以,不过他直接返回了一个List<String>
所以我也就处理了一下,得到了数据表
下面是处理方式:
# -*- coding: utf-8 -*-
import requests
import DbHelper
cityData = requests.get("http://res.42du.cn/static/json/region/prov-town.json")
db = DbHelper.DbHelper('192.168.0.128', 'root', 'root', 'python')
try:
cityJson = cityData.json()
except:
print('ValueError:', "没有json数据")
def stringToList(str):
return str.split(":")
for city in cityJson:
lCity = stringToList(city)
cityNum = lCity[0]
cityStr = lCity[1]
pid = 0
if len(cityNum) % 2 == 0 and len(cityNum) > 2:
pid = cityNum[:-2]
elif len(cityNum) > 3:
pid = cityNum[:-3]
try:
pid = int(pid)
depth = len(cityNum) / 2
except ValueError as e:
print("转换错误")
sql = '''
insert into `cms_areas3`(`id`,`name`,`pid`,`depth`) values (%d,'%s',%d,%d)
''' % (int(cityNum), cityStr, pid, depth)
print(sql)
db.execute(sql).save()
db.close()
print('success')
引了一个库,爬虫的时候经常用,想必大家都认识。
数据库配置的是我自己虚拟机里面的,因为数据库的那个封装的不是太好,所以,底下操作的时候有 insert into 表名,大家一起看着改了就行。
后面的时候,我又连接了高德的地图api,把数据表中的地址的经纬度弄过来了,下面的数据表中的是完整。
因为代码中现在还有点问题,开多线程处理的,不稳定,之后了再贴,也不能误人。
数据表,好吧,写到这儿的时候,看到csdn的编辑器里面不能上传文件。
已把文件上传到csdn了,还不知道能不能审核通过!