用Python3批量获取街景图片

用Python3批量获取百度街景图片

首先去百度官网上申请一个AK。
另外,Python中一些库的配置需要自己去搜索一下,时隔太长,已经不记得自己找的哪些博客了。
话不多说,直接上代码。

# _*_ coding: utf-8 _*_
import urllib
from urllib.request import urlopen
import threading
from optparse import OptionParser
import bs4
import sys
import re
import cv2
try:
    import urlparse
except ImportError:
    import urllib.parse as urlparse
import queue
import hashlib
import matplotlib.pyplot as plt
import numpy as np

def download(url, name):
    conn = urllib.request.urlopen(url)
    f=open(name,'wb')
    f.write(conn.read())
    f.close

fp = open("C:\\Users\\不凋不败\\Desktop\\map.txt","r") # 写出.txt文件在自己电脑中的路径,我的是沿一条直线爬数据,txt里面存的是起点和终点的经纬度坐标,向下面一样
#114.364091,30.531921
#114.36410,30.53168
start_end_points = fp.readlines()
start_point = start_end_points[0]
start_point = start_point.strip('\n')
start_point = start_point.split(',')
start_point_jin = start_point[0]
start_point_wei = start_point[1]

end_point = start_end_points[1]
end_point = end_point.strip('\n')
end_point = end_point.split(',')
end_point_jin = end_point[0]
end_point_wei = end_point[1]

jins = np.arange(float(start_point_jin)*1000000, float(end_point_jin)*1000000, 1)*0.000001
points_num = len(jins)
weis = np.linspace(float(start_point_wei)*1000000, float(end_point_wei)*1000000, points_num)*0.000001
#这个经纬度的循环距离可以自己来定义的

for iPoint in range(points_num):
    jin = jins[iPoint]
    wei = weis[iPoint]
    #这里要注意下,对应的经纬度没有街景图的地方,输出的会是无效图片
    print(jin, wei)
    name = "D:\\yzyC++\\" + str(jin) + "_" + str(wei) +".jpg"
    url = "http://api.map.baidu.com/panorama/v2?ak=???&width=1024&height=512&location="+str(jin)+","+str(wei)+"&fov=180"  # 输入你的KEY"
    print(name)
    print(url)
    download(url,name)
fp.close()

这个是获取到的部分图片:
用Python3批量获取街景图片_第1张图片
用Python3批量获取街景图片_第2张图片
用Python3批量获取街景图片_第3张图片
目前,尚未找到可以无限量获取街景图片的方法,超出了限额百度就把你的Ak疯了,如果有朋友知道,望告知!!!

你可能感兴趣的:(用Python3批量获取街景图片)