没遇到反爬,暂不用控制爬速度。
# 下面这行一定要加不会会报错 # coding=utf-8 import json import time import pymysql import requests # 获取全国城市编码 def getCity(): for pn in range(1, 60): # print('----------第' + str(pn) + '页----------' ) parameter = { 'query_type': 'TQUERY', 'pagesize': '20', 'pagenum': pn, 'qii': 'true', 'cluster_state': '5', 'need_utd': 'true', 'utd_sceneid': '1000', 'div': 'PC1000', 'addr_poi_merge': 'true', 'is_classify': 'true', 'zoom': '5', 'city': '100000', 'geoobj': '70.064603|26.107167|133.345871|41.927674', 'keywords': '农贸市场' } url = 'https://www.amap.com/service/poiInfo?' try: res = requests.get(url, params=parameter) # time.sleep(1) res_json = json.loads(res.text) for word in (res_json["data"])["suggestion"]['regions']: if word["adcode"] != "": print(word["adcode"] + '\t' + word["name"]) amap(word["adcode"], '宾馆') except: pass # 查询所在城市关键词信息 def amap(adcode, keyword): for pn in range(1, 60): # print('----------第' + str(pn) + '页----------' ) parameter = { 'query_type': 'TQUERY', 'pagesize': '20', 'pagenum': pn, 'qii': 'true', 'cluster_state': '5', 'need_utd': 'true', 'utd_sceneid': '1000', 'div': 'PC1000', 'addr_poi_merge': 'true', 'is_classify': 'true', 'zoom': '11', 'city': adcode, 'geoobj': '37.325347|17.613722|163.887862|48.959349', 'keywords': keyword } url = 'https://www.amap.com/service/poiInfo?' try: res = requests.get(url, params=parameter) res_json = json.loads(res.text) # time.sleep(2) for word in (res_json["data"])["poi_list"]: # if word["tel"] != "": print(word["cityname"] + '\t' + word["name"] + "\t" + word["tel"] + "\t" + word["address"]) addMarketMysql(word) # file.write(word["cityname"] + '\t' + word["name"] + "\t" + word["tel"] + "\t" + word["address"] + '\n') except: pass # 写入mysql def addMarketMysql(word): # 连接 mysql db = pymysql.connect("localhost", "root", "root", "data") cursor = db.cursor() # 数据库的相关操作 sql = "insert into market_info(city, marketName, phone, address) values (%s,%s,%s,%s)" # 执行数据库语句 cursor.execute(sql, (word["cityname"], word["name"], word["tel"], word["address"])) # 提交数据库 db.commit() print('save market done') db.close() if __name__ == '__main__': # file = open('dance.txt', 'w', encoding='utf-8') keyword2 = '农贸市场' # file.write('----------高德----------' + '\n') getCity() # file.close()