资源简介
Python代码,可以用来爬取百度地图上的小区数据,但当然可以爬取学校,还有公园,并且获得经纬度
代码片段和文件信息
# coding: utf-8
# In[ ]:
#爬别的poi就把小区改成其他的,比如银行,中学。爬取其他区域的,就把bounds的经纬度修改,bounds的经纬度可以通过
#百度地图开发者网站,开发文档里面的拾取坐标。
# In[ ]:
#变量主要修改,las根据区域的大小进行修改,可以看到底划分了多少个正方形。
# In[ ]:
http://api.map.baidu.com/place/v2/search?query=小区&bounds=31.662032117.03767631.97818117.371127&page_size=20&page_num=0&output=json&ak=PfzqOqhhFIfCsCxAN2uEPP3mrf9QdQtC
# In[26]:
import json
import sys
import requests #导入requests库,这是一个第三方库,把网页上的内容爬下来用的
ty=sys.getfilesystemencoding() #这个可以获取文件系统的编码形式
import time
lat_1=31.662032
lon_1=117.037676
lat_2=31.97818
lon_2=117.371127 #坐标范围
las=0.2 #给las一个值1
ak=‘PfzqOqhhFIfCsCxAN2uEPP3mrf9QdQtC‘
push=r‘F:\python\zwzwlast.txt‘
#我们把变量都放在前面,后面就不涉及到变量了,如果要爬取别的POI,修改这几个变量就可以了,不用改代码了。
print (time.time()) #相较于python2.7,python3print 需要加括号。
print (‘开始‘)
urls=[] #声明一个数组列表
lat_count=int((lat_2-lat_1)/las+1)
lon_count=int((lon_2-lon_1)/las+1)
for lat_c in range(0lat_count):
lat_b1=lat_1+las*lat_c
for lon_c in range(0lon_count):
lon_b1=lon_1+las*lon_c
for i in range(020):
page_num=str(i)
url=‘http://api.map.baidu.com/place/v2/search?query=小区& bounds=‘+str(lat_b1)+‘‘+str(lon_b1)+‘‘+str(lat_b1+las)+‘‘+str(lon_b1+las)+‘&page_size=20&page_num=‘+str(page_num)+‘&output=json&ak=‘+ak
urls.append(url)
#print(urls)
#urls.append(url)的意思是,将url添加入urls这个列表中。
f=open(r‘F:\xiaoqu.txt‘‘w‘encoding=‘utf-8‘)
print (‘url列表读取完成‘)
for url in urls:
time.sleep(10) #为了防止并发量报警,设置了一个10秒的休眠。
html=requests.get(url)#获取网页信息
data=html.json()#获取网页信息的json格式数据
print(data)
for item in data[‘results‘]:
jname=item[‘name‘]
jlat=item[‘location‘][‘lat‘]
jlon=item[‘location‘][‘lng‘]
评论
共有 条评论