我正在编写一个代码,该代码会创建多个URL,这些URL也会存储在列表中。 下一步是打开每个URL,下载数据(只有文本,格式为XML或JSON)并保存下载的数据。
由于在线社区,我的代码运行良好。它停留在打开URL并下载数据的位置。我希望url.request使用我创建的url遍历列表并单独调用每个url,打开它,显示它并继续下一个。但它只是创建网址的循环,但没有。没有反馈,没有。
import urllib.request
.... some calculations for llong and llat ....
#create the URLs and store in list
urls = []
for lat,long,lat1,long1 in (zip(llat, llong,llat[1:],llong[1:])):
for pages in range (1,17):
print ("https://api.flickr.com/services/rest/?method=flickr.photos.search&format=json&api_key=5.b&nojsoncallback=1&page={}&per_page=250&bbox={},{},{},{}&accuracy=1&has_geo=1&extras=geo,tags,views,description".format(pages,long,lat,long1,lat1))
print (urls)
#accessing the website
data = []
for amounts in urls:
response = urllib.request.urlopen(urls)
flickrapi = data.read()
data.append(+flickrapi)
data.close()
print (data)
我做错了什么??
下一步是下载数据并将其保存到文件或其他地方以便进一步处理。 由于我会收到很多数据,比如很多很多,我不确定将它存储到R(或者可能是Python? - 需要对它进行一些统计工作)的最佳方法是什么。有什么建议吗?
答案 0 :(得分:0)
您没有将生成的网址附加到网址列表,而是打印它们:
print ("https://api.flickr.com/services/rest/?method=flickr.photos.search&format=json&api_key=5.b&nojsoncallback=1&page={}&per_page=250&bbox={},{},{},{}&accuracy=1&has_geo=1&extras=geo,tags,views,description".format(pages,long,lat,long1,lat1))
应该是:
urls.append("https://api.flickr.com/services/rest/?method=flickr.photos.search&format=json&api_key=5.b&nojsoncallback=1&page={}&per_page=250&bbox={},{},{},{}&accuracy=1&has_geo=1&extras=geo,tags,views,description".format(pages,long,lat,long1,lat1))
然后您可以按计划迭代网址。
但是您将在以下行遇到错误:
response = urllib.request.urlopen(urls)
在这里,您将整个网址集提供给urlopen
,您应该在这里输入一个名为amounts
的网址中的网址,如下所示:
response = urllib.request.urlopen(amounts)