Say
之前看到有人要这个, 之前的还是破解的还不能用了, 网上搜了一下原理,发现就是一个爬虫....
因为涉及到界面,使用delphi/C#方便一点, 此处使用delphi.
后来想了一下, 或许最简单的是纯前端js+html.有兴趣的童鞋可以做一下,
因为时间问题就做了百度和高德的另外两个没做,有兴趣的可以补一下配置文件
ps.
因为原理简单, 就是爬虫, 所以开始设计的时候想的是一切皆可配置, 后来发现 仅仅百度和高德的接口 需要的参数个数都不一样, 放弃.
本来想用一部分js代替一部分不好配置/理解的 配置, 原理是使用windows的Ole的ScriptControl
因为在传递过长的json的时候js会解析不出来. json短的时候是可以的.加了json2.js 也不行,放弃
配置文件解读
[Form]
height=530
width=950
窗体大小
[Col]
name=名字|200
列,配置几列显示几列 第一个为filedName 一二个Caption 第三个列宽
[url]
baidu=https://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=con&from=webmap&c=%area%&wd=%searchkey%&wd2=&pn=%pageNumber%&nn=%startNumber%&db=0&sug=0&addr=0
这个就是要爬的网站, 这里配置几个 界面上显示几个
有几个特殊标记是用来替换爬虫地址的
;c=%area% 地区 详见***City z.B...baiduCity
;wd=%searchkey% 要搜索的字符串
;pn=%pageNumber% 第几页
;nn=%startNumber% 从第几个开始(百度特有的)
[baidu]
count=result.total
page=10
list=content
addr=addr
tag=di_tag
tel=tel;
area_name=area_name
这里的百度对应着[url]中的baidu
count~area_name对应着[Col]中的FiledName
等号后面是解析获取到数据解析Json时候的数据
count=result.total
page=10
list=content
这三个是特殊的 必须配置的
分别是总条数(count) 和 每页有多少个数据 (page) 以及内容列表在那(list)
除了page 以外 其它都是Json中的位置
[baiduCount]
count=result.total
page=10
list=content
name=name
ext_info=ext_info
因为百度/高德都不允许不给省份/市区就查找 如果不给的话就显示出各个地区有多少个结果 意思和[baidu]一样的 就是因为返回的json数据不同,我们要提取和显示的地方也不同而已
[baiduCity]
拉萨市=100
这个就是百度城市对应的编码 get url的时候要用, [baiduCity] 中的 baidu 对应着[baidu]和[url]中的baidu
[gaodeCity]
上海市=310000
同理 高德用的邮政编码 不传城市的时候会返回给你