基於python3.6的如何爬取百度地圖

先前參考了其餘的代碼,大多數是python2.7寫的,而3.6用的類庫以及規則有了很大的變更,因此本身寫了一個這樣的代碼,供給你們參考。python

 1 def get_station(i):      
 2     station=[]
 3     bus_sto=urllib.parse.quote(u'公交站'.encode('utf-8'))              
 4     city=urllib.parse.quote(u'南昌'.encode('utf-8'))                    
 5     url1="http://api.map.baidu.com/place/v2/search?ak=&output=json&query=%s&scope=1&region=%s&page_size=1&page_num=%d"%(bus_sto,city,i)
 6     #encodedStr = urllib.parse.quote(url1, safe="/:=&?#+!$,;'@()*[]")
 7     req=requests.get(url1)                                
 8     content= req.content
 9     data=json.loads(content)                    
10     station.append(data['total'])           
11     result=data['results']                   
12     str_temp=result[0]         
13     loc=str_temp['location']    
14     lng=float(loc['lng'])        
15     lat=float(loc['lat'])
16     station.append(str_temp['name']+",%f"%lng+",%f"%lat)    
17     print (station[1])
18     return station
19 
20 def run():                              
21    get_num=get_station(0)              
22    num=get_num[0]
23    for i in range(0,num):          
24     Bstation=get_station(i)
25     file = open('.\\baidull.txt','a')
26     file.writelines(Bstation[1]+'\n')
27     file.close()                     
28 
29 if __name__=='__main__':
30     run()

問題仍是有一些,好比說調用API時返回的數據有時不足,應該是百度地圖那邊作了必定的限制,後續可能會採用隨機IP的方法。json

相關文章
相關標籤/搜索