diff --git a/projects/Baidu_POI_crawl/README.md b/projects/Baidu_POI_crawl/README.md new file mode 100644 index 000000000..9dc7ff0e0 --- /dev/null +++ b/projects/Baidu_POI_crawl/README.md @@ -0,0 +1,30 @@ +# Script Title + + +Crawl the POI in the city through Baidu map API. + +### Prerequisites + + +1. `pip install -r requirements.txt` +2. Log in to [Baidu map open platform](https://lbsyun.baidu.com/apiconsole/key#/home), creating web API and record AK. + +### How to run the script + + + +1. `cd python-mini-projects\projects\Baidu_POI_crawl` +2. `python main.py --ak yours_ak --city city_name --poi poi_name` + +### Screenshot/GIF showing the sample use of the script + + + +![image-20211117172514622](https://user-images.githubusercontent.com/71769312/142175449-294daf40-413a-43df-aa3a-8d99a203afa9.png) + +![UXGOS$6WMD)`{XQ$8YK}7WU](https://user-images.githubusercontent.com/71769312/142175459-8f10d1c4-5c5d-4754-9fd5-d5ec58a79081.png) + +## *Author Name* + + +[YiZhou Chen](https://github.com/geoyee) diff --git a/projects/Baidu_POI_crawl/__pycache__/util.cpython-37.pyc b/projects/Baidu_POI_crawl/__pycache__/util.cpython-37.pyc new file mode 100644 index 000000000..f80dadf79 Binary files /dev/null and b/projects/Baidu_POI_crawl/__pycache__/util.cpython-37.pyc differ diff --git a/projects/Baidu_POI_crawl/__pycache__/util.cpython-38.pyc b/projects/Baidu_POI_crawl/__pycache__/util.cpython-38.pyc new file mode 100644 index 000000000..ce59c01d5 Binary files /dev/null and b/projects/Baidu_POI_crawl/__pycache__/util.cpython-38.pyc differ diff --git a/projects/Baidu_POI_crawl/main.py b/projects/Baidu_POI_crawl/main.py new file mode 100644 index 000000000..f7c562005 --- /dev/null +++ b/projects/Baidu_POI_crawl/main.py @@ -0,0 +1,27 @@ +import os +import os.path as osp +from util import get_baidu_poi +import argparse + + +def run(args): + baidu_web_ak = args.ak + city_str = args.city + roi_key = args.poi + output = args.save + if not osp.exists(output): + os.makedirs(output) + get_baidu_poi(roi_key, city_str, baidu_web_ak, output) + print("current area completed") + + +parser = argparse.ArgumentParser(description="input parameters") +parser.add_argument("--ak", type=str, required=True, help="Baidu web ak") +parser.add_argument("--city", type=str, required=True, help="City name") +parser.add_argument("--poi", type=str, required=True, help="POI key") +parser.add_argument("--save", type=str, default="output", help="Save path") + + +if __name__ == "__main__": + args = parser.parse_args() + run(args) \ No newline at end of file diff --git a/projects/Baidu_POI_crawl/output/2021-11-17.log b/projects/Baidu_POI_crawl/output/2021-11-17.log new file mode 100644 index 000000000..938f3a7af --- /dev/null +++ b/projects/Baidu_POI_crawl/output/2021-11-17.log @@ -0,0 +1 @@ +2021-11-17-17-36-18 成都 3 diff --git a/projects/Baidu_POI_crawl/output/2021-11-17.txt b/projects/Baidu_POI_crawl/output/2021-11-17.txt new file mode 100644 index 000000000..277fcc33c --- /dev/null +++ b/projects/Baidu_POI_crawl/output/2021-11-17.txt @@ -0,0 +1,54 @@ +四川大学(望江校区),104.090633,30.637031,武侯区,四川省成都市武侯区一环路南一段24号 +四川大学(江安校区),104.005145,30.562814,双流区,成都市双流区川大路二段2号 +电子科技大学(沙河校区),104.107198,30.681868,成华区,四川省成都市成华区建设北路二段4号 +成都大学,104.196613,30.656051,龙泉驿区,四川省成都市龙泉驿区成洛大道2025号 +西南民族大学(武侯校区),104.055946,30.645411,武侯区,四川省成都市武侯区一环路南四段16号 +西南财经大学(柳林校区),103.827675,30.687832,温江区,成都市温江区柳台大道555号 +西南交通大学(九里校区),104.059439,30.704977,金牛区,四川省成都市金牛区二环路北一段111号 +电子科技大学(清水河校区),103.937404,30.756035,郫都区,四川省成都市高新区西源大道2006号 +西南交通大学(犀浦校区),103.993214,30.770399,郫都区,四川省成都市郫都区犀安路999号 +成都中医药大学(十二桥校区),104.050309,30.672574,金牛区,四川省成都市金牛区十二桥路37号 +四川农业大学(都江堰校区),103.629275,31.009812,都江堰市,四川省成都市都江堰市建设路288号 +四川大学(华西校区),104.075894,30.646763,武侯区,成都市武侯区人民南路三段17号 +成都艺术职业大学,103.892092,30.493563,新津区,四川省成都市新津区花源街道白云大道115号 +电子科技大学(九里堤校区),104.055669,30.716153,金牛区,成都市金牛区九里堤西路8号 +电子科技大学继续教育学院,104.103193,30.679693,成华区,四川省成都市成华区一环路东一段240号 +电子科技大学沙河校区-逸夫楼,104.109665,30.680913,成华区,成都市成华区建设北路二段4号电子科技大学沙河校区 +成都大学-四川抗菌素工业研究所,104.177919,30.694508,成华区,成都市成华区华冠路168号 +我的大学,104.197398,30.828142,新都区,成都市新都区同仁路199号 +成都中医药大学附属医院,104.048468,30.673511,金牛区,成都市金牛区十二桥路39-41号 +电子科技大学西区科技园,103.98074,30.739837,郫都区,四川省成都市郫都区天辰路88号 +成都大学-图书馆,104.195601,30.656236,龙泉驿区,四川省成都市龙泉驿区十陵镇成洛大道 +成都广播电视大学继续教育学院(建设北路一段),104.102742,30.677484,成华区,成都市成华区建设北路一段7号 +西南石油大学新体测中心,104.194813,30.838617,新都区,成都市新都区鸿运大道东段西南石油大学(成都校区) +成都理工大学东苑-9栋,104.158206,30.688295,成华区,成都市成华区民智巷理工东苑-西区 +成都广播电视大学直属城东学院-教学楼1号楼,104.102347,30.677874,成华区,成都市成华区建设北路一段7号 +电子科技大学附属实验小学(沙河校区),104.10353,30.683807,成华区,四川省成都市成华区府青路2段-3号-青1号 +成都大学附属中学校,104.098172,30.688535,成华区,四川省成都市成华区府青路街道三友路135号 +成都理工大学附属小学,104.153179,30.696257,成华区,四川省成都市成华区民兴东路62号 +西南财经大学,104.442003,30.862562,金堂县,成都市金堂县幸福横街百合苑(幸福横路) +电子科技大学实验幼儿园,104.10855,30.684714,成华区,成都市成华区建设北路二段5号东院沙河缘15号 +四川师范大学附属天府欧城幼稚园,104.261685,30.898376,青白江区,成都市青白江区同华大道与新河路交叉路口往西北约260米 +西南石油大学学生公寓-4号楼,104.19334,30.829785,新都区,四川省成都市新都区大学路160号 +西南石油大学教工41幢,104.188074,30.83157,新都区,成都市新都区蜀龙大道北段香城学府 +西南石油大学教工42幢,104.188467,30.831576,新都区,成都市新都区蜀龙大道北段香城学府 +西南石油大学(成都校区)教工宿舍-12幢,104.188587,30.830054,新都区,成都市新都区南环路香城学府 +西南石油大学材料科学与工程学院,104.190255,30.837702,新都区,成都市新都区蜀龙大道北段西南石油大学(成都校区) +西南石油大学教工35幢,104.187797,30.832034,新都区,成都市新都区蜀龙大道北段香城学府 +成都医学院第一附属医院-大学生宿舍,104.165693,30.836846,新都区,成都市新都区新新街二巷成都医学院第一附属医院北侧 +成都医学院第一附属医院大学生宿舍-33幢,104.165218,30.836607,新都区,四川省成都市新都区成都医学院第一附属医院大学生宿舍33幢 +电子科技大学医院,104.11028,30.68007,成华区,成都市成华区建设北路二段4号电子科技大学沙河校区 +西南石油大学(成都校区)教工宿舍-2幢,104.186624,30.828824,新都区,成都市新都区嘉陵路西南石油大学(成都校区)教工宿舍2幢 +四川农业大学都江堰校区-教职工住宅第5幢,103.630269,31.010702,都江堰市,四川省成都市都江堰市柳岸路附近四川农业大学都江堰校区教职工住宅第5幢 +四川农业大学都江堰校区第一教学楼-侧楼,103.627828,31.010159,都江堰市,四川省成都市都江堰市建设路288号 +四川农业大学都江堰校区学生公寓第-1幢,103.630687,31.009693,都江堰市,四川省成都市都江堰市观景路41号附近四川农业大学都江堰校区学生公寓第1幢 +四川农业大学-第二林业勘察设计研究所,103.626795,31.010544,都江堰市,成都市都江堰市建设路288号 +西华大学老川东食品科研中心,104.221373,30.822995,新都区,成都市新都区君跃路四川老川东食品有限公司 +西南石油大学成都校区油气钻井技术国家工程实验室钻头研究室,104.190204,30.836932,新都区,成都市新都区蜀龙大道北段西南石油大学(成都校区) +四川师范大学附属田童幼儿园,103.630805,30.97236,都江堰市,成都市都江堰市幸福镇灌温路78号 +四川农业大学都江堰校区-教职工住宅第14幢,103.628016,31.012494,都江堰市,成都市都江堰市建设路288号四川农业大学(都江堰校区) +四川西南交通大学希望学院-图书馆,104.471273,30.85726,金堂县,四川省成都市金堂县学府路8号 +四川农业大学都江堰校区-教职工住宅第7幢,103.630133,31.010203,都江堰市,成都市都江堰市建设路288号四川农业大学(都江堰校区) +西南石油大学教工-28幢,104.187065,30.832293,新都区,成都市新都区西南石油大学(成都校区)教工宿舍28幢 +西华大学彭州校区-女生公寓,103.949394,30.98662,彭州市,成都市彭州市南大街168号 +四川农业大学都江堰校区-研究生公寓,103.632825,31.010149,都江堰市,成都市都江堰市平武巷柳岸公寓东南门南侧约90米 diff --git a/projects/Baidu_POI_crawl/requirements.txt b/projects/Baidu_POI_crawl/requirements.txt new file mode 100644 index 000000000..0b37a21e8 --- /dev/null +++ b/projects/Baidu_POI_crawl/requirements.txt @@ -0,0 +1,2 @@ +requests +json \ No newline at end of file diff --git a/projects/Baidu_POI_crawl/util.py b/projects/Baidu_POI_crawl/util.py new file mode 100644 index 000000000..b00c3dc71 --- /dev/null +++ b/projects/Baidu_POI_crawl/util.py @@ -0,0 +1,47 @@ +import requests +import json +import time + + +# call API +def get_baidu_poi(roi_key, city_str, baidu_ak, output): + """ + inputs: + roi_key: poi name + city_str: city name + baidu_ak: baidu web API AK + output: file save path + """ + now_time = time.strftime("%Y-%m-%d") + page_num = 0 + logfile = open(output + "/" + now_time + ".log", "a+", encoding="utf-8") + file = open(output + "/" + now_time + ".txt", "a+", encoding="utf-8") + while True: + try: + URL = "http://api.map.baidu.com/place/v2/search?query=" + roi_key + \ + "®ion=" + city_str + \ + "&output=json" + \ + "&ak=" + baidu_ak + \ + "&scope=2" + \ + "&page_size=20" + \ + "&page_num=" + str(page_num) + resp = requests.get(URL) + res = json.loads(resp.text) + if len(res["results"]) == 0: + logfile.writelines(time.strftime("%Y-%m-%d-%H-%M-%S") + " " + city_str + " " + str(page_num) + "\n") + break + else: + for r in res["results"]: + j_name = r["name"] + j_lat = r["location"]["lat"] + j_lon = r["location"]["lng"] + j_area = r["area"] + j_add = r["address"] + j_str = str(j_name) + "," + str(j_lon) + "," + str(j_lat) + "," + str(j_area) + "," + str(j_add) + "\n" + file.writelines(j_str) + page_num += 1 + time.sleep(1) + except: + print("except") + logfile.writelines(time.strftime("%Y-%m-%d-%H-%M-%S") + " " + city_str + " " + str(page_num) + "\n") + break \ No newline at end of file