今天试这次练习的第二天,对昨天的做了一些完善浪费了一些时间,然后计划的今天的第二部分差了一点没有完成。明天尽量补上,但是明天一天课,估计又得加班了。
今天主要做了第二部分的完善行业分类和行业代码信息,在网上搜了好久没有找到可以像百度地图API这样的接口,也没有找到可以直接识别是什么行业的网站,没办法,作者选择了用python的字符串匹配来尝试实现这个功能。
大致思路为,
先爬取https://baike.baidu.com/item/国民经济行业分类/1640176?fr=aladdin的国民经济行业分类代码表大类的行业代码和名字建成数据库表。
然后根据原数据中的代表性字段去匹配行业名,找到相似度最高的就认为他是这个行业,如果没有相似的,填入未知。
接下来上代码:
python字符串相似度匹配代码:
import difflib def string_similar(s1, s2): return difflib.SequenceMatcher(None, s1, s2).quick_ratio()
python调用上面的方法,筛选最相似行业,并返回行业代码和名:
import strsame import pymysql db = pymysql.connect(host='localhost', port=3306, user='root', passwd='密码', db='库名', charset='utf8') def select(): sql = "select * from hangye" # 使用 cursor() 方法创建一个游标对象cur cur = db.cursor() # 使用 execute() 方法执行 SQL 查询 cur.execute(sql) results = cur.fetchall() #strsame.string_similar(s) db.close() return results def cpn(s,results): jieguo=["0","未知"] j=0.0; for i in range(0, results.__len__()): if j<strsame.string_similar(s,results[i][1]): j=strsame.string_similar(s,results[i][1]) jieguo[0]=results[i][0] jieguo[1]=results[i][1] return jieguo
python抽取原数据代表字段,并调用上面的方法查找到最近行业,并填入原数据表相应位置:
import Comparenum
import pymysql
db = pymysql.connect(host='localhost',
port=3306,
user='root',
passwd='',
db='',
charset='utf8')
results=Comparenum.select()
def select():
global results
data=""
sql="select yingyonghangyemingcheng,hangye,chengguomingcheng from test2 where biaozhunhangyenum is null"
# 使用 cursor() 方法创建一个游标对象cur
cur = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cur.execute(sql)
for i in range(cur.rowcount):
check = 0
data1 = cur.fetchone()
if data1[0]!=None:
data=data1[0]
elif data1[1]!=None:
data = data1[1]
elif data1[2]!=None:
data = data1[2]
else:
check=1
#data1 = " ".join('%s' % id for id in data)
if(check==0):
print(data)
center=Comparenum.cpn(data,results)
if data1[0] != None:
sql_update = "update test2 set biaozhunhangyenum ='" + center[0] + "',biaozhunhangye ='" + center[
1] + "' where yingyonghangyemingcheng='" + data + "'"
elif data1[1] != None:
sql_update = "update test2 set biaozhunhangyenum ='" + center[0] + "',biaozhunhangye ='" + center[
1] + "' where hangye='" + data + "'"
elif data1[2] != None:
sql_update = "update test2 set biaozhunhangyenum ='" + center[0] + "',biaozhunhangye ='" + center[
1] + "' where chengguomingcheng='" + data + "'"
print(center)
update(sql_update)
print("第"+str(i)+"次修改")
db.close()
def update(sql):
cur = db.cursor()
# 使用 execute() 方法执行 SQL 查询
try:
cur.execute(sql) # 执行sql
# 提交
db.commit()
except Exception as e:
# 错误回滚
print("错误信息:%s" % str(e))
db.rollback()
if __name__ == '__main__':
select();
这就是所有代码,由于没有爬取到国民经济行业分类代码表大类的行业的数据所以还没有检测有没有成功,所以也没完成,不过自己编了一些数据,感觉效果还行,明天我会完成数据的爬取,然后完成第二部分,进攻第三部分,也就是最后一部分可视化,争取明天完成任务。到此结束。