• 大小: 4KB
    文件类型: .py
    金币: 2
    下载: 3 次
    发布日期: 2021-09-14
  • 语言: Python
  • 标签: poi  

资源简介

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‘]
    

评论

共有 条评论