不分类别的效果

不同分类的分布效果图

从海友网获取各个企业名单保存进mysql

cmfishhelper.py

从下列网址得到各个企业名片的网址保存进表cmfish

cds = get_cds()
http://www.cmfish.com/cd/cd_style.php?pageNum_Recordset1=%d&totalRows_Recordset1=191&id=%d

访问企业名片页面获得名称联系人地址保存进数据库

update_cds()
取出地址,从百度地图获得经纬度保存进数据库
http://api.map.baidu.com/geocoder/v2/
update_lnglat()
把名称,经纬度取出来生成个json文件en_json()
#encoding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append('..')
import requests
from bs4 import BeautifulSoup
import pprint
from utils.db import sqlhelper
from utils import setting
import re
import pymysql
import traceback
from requests.utils import get_encoding_from_headers, get_encodings_from_content
import urllib2
import jsontypeto,pageto = 7,5
cardurls = "http://www.cmfish.com/cd/cd_style.php?id=%d"
cdpages = "http://www.cmfish.com/cd/cd_style.php?pageNum_Recordset1=%d&totalRows_Recordset1=191&id=1"
mysqldb = setting.YAMLDATA.get('mysqldb2')
host,user,pwd,db=mysqldb.get('host'),mysqldb.get('user'),mysqldb.get('pwd'),mysqldb.get('cmfishdb')
sh=sqlhelper.SqlHelper(host,user,pwd,db,'mysql')
cardidrec=re.compile('((id=)([^&][^&]*))', re.IGNORECASE)
hotrec=re.compile('((hot=)([^&][^&]*))', re.IGNORECASE)
daterec=re.compile('(\xbc\xd3\xc8\xeb\xc8\xd5\xc6\xda: ([\\s\\S]*?)</td>)', re.IGNORECASE)
namerec=re.compile('(</a> > <strong>([\\s\\S]*?)</strong>)', re.IGNORECASE)
contactrec=re.compile('(\xc1\xaa \xcf\xb5 \xc8\xcb</td>\r\n                              <td>([\\s\\S]*?)</td>)', re.IGNORECASE)
mobilerec=re.compile('(\xc1\xaa\xcf\xb5\xb5\xe7\xbb\xb0</td>\r\n                              <td>([\\s\\S]*?)</td>\r\n)', re.IGNORECASE)
mailrec=re.compile('(\xb5\xe7\xd7\xd3\xd3\xca\xcf\xe4</td>\r\n                              <td>([\\s\\S]*?)</td>\r\n)', re.IGNORECASE)
addressrec=re.compile('(\xc1\xaa\xcf\xb5\xb5\xd8\xd6\xb7</td>\r\n                              <td>([\\s\\S]*?)</td>\r\n)', re.IGNORECASE)
noterec=re.compile('(<td>    ([\\s\\S]*?)</td>\r\n)', re.IGNORECASE)def get_cds():cds = []for i in range(1,typeto+1):for j in range(0,pageto):url = 'http://www.cmfish.com/cd/cd_style.php?pageNum_Recordset1=%d&totalRows_Recordset1=191&id=%d' % (j,i)req=requests.get(url)soup = BeautifulSoup(req.text, 'html.parser')links=soup.find_all('a')for link in links:href = link.attrs['href']if "cd.php?id=" in href and href<>'cd.php?id=&hot=':cdlink = "http://www.cmfish.com/cd/"+hrefpprint.pprint(cdlink)save_cd(i,j,cdlink)cds.append(cdlink)return cdsdef save_cd(typeid,pageid,url):sql = r"insert into card(typeid,pageid,url) values(%d,%d,'%s')" % (typeid,pageid,url)sh.ExecNonQuery(sql)def re_result(strrec,str,value):searched = strrec.findall(str)if searched <> None and len(searched)>0:pprint.pprint(searched[0][1])try:return searched[0][1].decode('gb2312')except:return searched[0][1].decode('gbk')else:return valuedef url_result(strrec,str,value):searched = strrec.findall(str)if searched <> None and len(searched)>0:print searched[0][2]return searched[0][2]else:return valuedef get_detail(selsql,updsql):results=sh.ExecQuery(selsql)for result in results:try:id,url=result[0],result[1]cardid,hot = url_result(cardidrec,url,''),url_result(hotrec,url,0)#req = requests.get(url)#req.encoding=get_encodings_from_content(req.content)request = urllib2.Request(url)response = urllib2.urlopen(request)content = response.read()date = re_result(daterec,content,'')name = re_result(namerec,content,'')contact = re_result(contactrec,content,'')mobile=re_result(mobilerec,content,'')mail = re_result(mailrec,content,'')address = re_result(addressrec,content,'')note = re_result(noterec,content,'')sql = updsql % (cardid,hot,pymysql.escape_string(date),pymysql.escape_string(name),pymysql.escape_string(contact),pymysql.escape_string(mobile),pymysql.escape_string(mail),pymysql.escape_string(address),pymysql.escape_string(note),id)sh.ExecNonQuery(sql)except Exception,e:print 'error:',e.message,traceback.format_exc()def update_cds():selsql= "select id,url from card where cardid is null"updsql = "update card set cardid=%s,hot=%s,date='%s',name='%s',contact='%s',mobile='%s',mail='%s',address='%s',note='%s' where id=%d"get_detail(selsql,updsql)def get_lnglat(address):print addressurl = 'http://api.map.baidu.com/geocoder/v2/'output = 'json'ak = 'c7aBgFWD6cMDPOe4BSiG8HLNlvXNKvCW'uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + aktemp = urllib2.urlopen(uri)temp = json.loads(temp.read())return tempdef save_lnglat(selsql,updsql):results=sh.ExecQuery(selsql)for result in results:try:id,address=result[0],result[1]if '例如' not in address:address = address.replace(' ',',')result = get_lnglat(address)if result.get('result') <> None:lat,lng = result.get('result').get('location').get('lat'),result.get('result').get('location').get('lng')sql = updsql % (lat,lng,id)sh.ExecNonQuery(sql)except Exception,e:print 'error:',e.message,traceback.format_exc()#result[1]def update_lnglat():selsql= "select id,address from card where lat is null"updsql = "update card set lat=%f,lng=%f where id=%d"save_lnglat(selsql,updsql)def gen_json(ofile='./../json/cards.json'):selsql = "select name,lat,lng,typeid from card where lat is not null"results=sh.ExecQuery(selsql)objs = []for res in results:objs.append({"name":res[0],"lat":float(res[1]),"lng":float(res[2]),"typeid":int(res[3])})jsonstr =json.dumps(objs)with open(ofile,'w') as f:f.write(jsonstr)print jsonstrif __name__ == '__main__':#cds = get_cds()#print len(cds)#update_cds()#print get_lnglat('台灣省桃園縣龜山鄉振興路1089巷15-1號')#update_lnglat()gen_json()

  

读取生成的json文件,显示在地图上

用file://访问html的时候读取json文件的时候会报错不能跨域的错误,发布成网站访问就可以

cmfish.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>海友网企业全国分布</title>
</head><body><div id="main" style="width: 1200px;height:1200px;"></div>
<script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../js/echarts-all-3.js"></script>
<script type="text/javascript" src="../js/china.js"></script><!-- 为ECharts准备一个具备大小(宽高)的Dom --><script type="text/javascript">var cards_arr= new Array()cards_arr[0] = []cards_arr[1] = []cards_arr[2] = []cards_arr[3] = []cards_arr[4] = []cards_arr[5] = []cards_arr[6] = []$.ajax({url: "../json/cards.json",//json文件位置
           type: "GET",//请求方式为get
           dataType: "json", //返回数据格式为json
           success: function(data) {//请求成功完成后要执行的方法 //each循环 使用$.each方法遍历返回的数据date
               $.each(data ,function(i, item) {cards_arr[item.typeid-1].push({name: item.name,value: [item.lng, item.lat]});loaddata(cards_arr)})}})function loaddata(data){//初始化var myChart = echarts.init(document.getElementById('main'));//myChart.showLoading();//加载数据前显示的动画效果/*res.push({name: "白玉路346号",value: [121.423744, 31.23829]   //这里concat后面的值就是value,这里统一设置成1。});res.push({name: "新民路城南工商所对面巷子( 南苑菜市旁边 )",value: [106.577573, 31.082472]   //这里concat后面的值就是value,这里统一设置成1。});*///console.log(data)var chart = echarts.init(document.getElementById('main'));   //这里是主体的初始化echart方法,与上面的简单demo类似。
        chart.setOption({backgroundColor: '#404a59',title: {text: '海友网企业全国分布',subtext: 'data from cmfish',sublink: 'http://www.cmfish.com',x: 'center',textStyle: {color: '#fff'}},tooltip: {trigger: 'item'},legend: {orient: 'vertical',x: 'left',data: ['生产厂商','进出口商','代理商','店铺','繁殖','个人','其他'],textStyle: {color: 'orange'}},//地图坐标系必备的配置,具体的含义可以参考api,索性都是中文的,没有什么阅读障碍。
        geo: {silent:false,map: 'china',label: {normal: {show: false},emphasis: {show: true}},itemStyle: {hoverAnimation:true,normal: {areaColor: '#323c48',borderColor: '#000'},emphasis: {areaColor: '#2a333d',opacity:0}}},series: [{name: '生产厂商',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data: data[0],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3},{name: '进出口商',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data:data[1],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3},{name: '代理商',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data:data[2],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3},{name: '店铺',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data:data[3],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3},{name: '繁殖',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data:data[4],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3},{name: '个人',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data:data[5],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3},{name: '其他',type: 'scatter',coordinateSystem: 'geo',    //参照系:之前设置的geo。//这里是api数据接受的的地方
                data:data[6],symbolSize: 10,    //散点半径
                label: {normal: {formatter: '{b}',show: false},emphasis: {show: true}},hoverAnimation:true,silent:false,animation:false,z:3}]});
}//myChart.setOption(option)</script></body>
</html>

以上代码提交在github上,可以下载所用到的echarts的js文件

https://github.com/sui84/pytest

转载于:https://www.cnblogs.com/sui84/p/8733292.html

使用echarts生成海友网企业全国分布地图相关推荐

  1. php 自定义表格并统计,PHP 使用Echarts生成数据统计报表的实现

    这篇文章主要介绍了PHP 使用Echarts生成数据统计报表的实现代码,需要的朋友可以参考下 echarts统计,简单示例 先看下效果图 看下代码 HTML页面 为ECharts准备一个Dom,宽高自 ...

  2. 如何解决海康网盘下载大文件中断问题?(idm更新链接)(貌似更新链接还是有问题)(用谷歌浏览器下载)

    以游客方式下载海康网盘一个9g的文件,老是下载到百分之几十就中断了,用360浏览器和迅雷都不行. 貌似是服务器做了限制 怎么解决? 我是把下载链接复制到手机用手机idm下载器下,, idm有断点续传和 ...

  3. 20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结

    20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结 会议组织开始混乱,资料袋连个纸笔都没有.后来越来越好,会议内容超级满意,演讲老师的分享精神超过大多其他会议,会议资料链接 ...

  4. 2011-2020年6月和讯网企业社会责任数据

    2011-2020年6月和讯网企业社会责任数据 1.时间:2011-2020年6月 2.来源:整理自和讯网 3.范围:全国 4.指标包括: 股票代码.股票简称.日期.总得分.评级. 股东责任.盈利得分 ...

  5. 海史密斯敏捷企业架构

    海史密斯敏捷企业架构的4 个层次包括: 投资管理分层 项目管理分层 迭代管理分层 技术实践分层.

  6. Beautiful爬取海词网词汇意思和短语

    Beautiful爬取海词网词汇意思和短语 直接上代码 # -*- encoding:utf-8 -*- import urllib.request # 导入urllib库的request模块 fro ...

  7. 湖北地图html代码,echarts全国省市地图代码

    [实例截图] echarts全国省市地图代码 [实例截图] [核心代码] html5 canvas echarts全国省市地图代码 *{margin: 0;padding: 0;} body{widt ...

  8. 使用echarts生成漂亮的3D地图

    使用echarts生成漂亮的3D地图 echarts是非常好用的图表插件,本文使用echarts来生成一个漂亮的3D地图 效果 准备资料 第三方插件 <script type="tex ...

  9. matlab生成海森矩阵

    在 Matlab 中,可以使用如下代码生成海森矩阵: n = 3; % 矩阵的大小 H = eye(n) - circshift(eye(n),1,2); 这里,n 表示生成的海森矩阵的大小,而 ey ...

  10. 用ECharts生成统计图

    用ECharts生成统计图 这是我的HTML部分: <div class="layui-fluid" style="font-size:16px"> ...

最新文章

  1. 如何转换VMware ESX虚拟机到Hyper-V格式?
  2. 仁慈型dea matlab程序,数据包络分析(DEA)方法..docx
  3. 深度学习:tensorflow Layers的实现,numpy实现深度学习(二)
  4. 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
  5. SQL笔记-使用not in在多个没有外键关联的表中查询
  6. python 论文数据处理_用Python一次性把论文作图与数据处理全部搞定!
  7. vSphere 7 With K8s系列09:部署wordpress示例
  8. Length of Last Word
  9. python中object类的源码在哪里-[Python之路] object类中的特殊方法
  10. nb物联网 bc95模块联网 bc95使用
  11. nfc pm3 模拟加密门禁卡_手机/手环NFC模拟加密门禁卡电梯卡最全教程之初期判断...
  12. web一阶段 day13 阿里矢量图库的使用方法
  13. 泛微 E9开发视频教程,零基础泛微开发
  14. 移动安全-安卓Smail代码入门讲解
  15. 做好4项防护,保障服务器安全
  16. Swift语言编写一个简单的条形码扫描APP
  17. 1+x云计算练习题(220)
  18. iframe 重新加载
  19. vue中的几个动效网站
  20. 为什么不能在BroadcastReceiver中开启子线程

热门文章

  1. Automatic Metallic Surface Defect Detection and Recognition with Convolutional NeuralNetworks-论文阅读笔记
  2. 【史上最详细】信贷中逾期天数统计说明
  3. js12---闭包,原型,继承
  4. AR涂涂乐⭐七、(end)取消“识别成功”提示面片、加入太阳系及其交互功能、退出按钮设置
  5. 案例-做一个30分钟倒计时
  6. 大数据云计算支撑公安工作跨越发展
  7. [渝粤教育] 西南科技大学 资源与环境概论 在线考试复习资料
  8. Google 的浏览器安全手册
  9. 软考真题———2018上
  10. 【PC工具】PC好用的迅雷下载版本合集,hash资源下载方法,石皮版迅雷软件去广告优化增强典藏版...