資源簡介
Python代碼,可以用來爬取百度地圖上的小區(qū)數(shù)據(jù),但當然可以爬取學(xué)校,還有公園,并且獲得經(jīng)緯度
代碼片段和文件信息
#?coding:?utf-8
#?In[?]:
#爬別的poi就把小區(qū)改成其他的,比如銀行,中學(xué)。爬取其他區(qū)域的,就把bounds的經(jīng)緯度修改,bounds的經(jīng)緯度可以通過
#百度地圖開發(fā)者網(wǎng)站,開發(fā)文檔里面的拾取坐標。
#?In[?]:
#變量主要修改,las根據(jù)區(qū)域的大小進行修改,可以看到底劃分了多少個正方形。
#?In[?]:
http://api.map.baidu.com/place/v2/search?query=小區(qū)&bounds=31.662032117.03767631.97818117.371127&page_size=20&page_num=0&output=json&ak=PfzqOqhhFIfCsCxAN2uEPP3mrf9QdQtC
#?In[26]:
import?json
import?sys
import?requests??#導(dǎo)入requests庫,這是一個第三方庫,把網(wǎng)頁上的內(nèi)容爬下來用的
ty=sys.getfilesystemencoding()??#這個可以獲取文件系統(tǒng)的編碼形式
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=[]?#聲明一個數(shù)組列表
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=小區(qū)&?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)?#為了防止并發(fā)量報警,設(shè)置了一個10秒的休眠。
????html=requests.get(url)#獲取網(wǎng)頁信息
????data=html.json()#獲取網(wǎng)頁信息的json格式數(shù)據(jù)
????print(data)
????for?item?in?data[‘results‘]:
????????jname=item[‘name‘]
????????jlat=item[‘location‘][‘lat‘]
????????jlon=item[‘location‘][‘lng‘]
????
評論
共有 條評論