從網路獲取圖片的幾種方法
阿新 • • 發佈:2019-01-27
通過API獲取網路的圖片下載,這裡以天行資料為例,做簡要實驗。
資料獲取地址:網站地址(key請在個人中心獲取,需註冊,然後在個人中心複製,替換APIKEY即可)
1. Python方法
import requests
import json
def main():
# request / response
resp = requests.get('http://api.tianapi.com/meinv/?key=自己的KEY&num=10')
mydict = json.loads(resp.text)
for tempdict in mydict['newslist' ]:
# 這裡的newslist要根據不同api中的名字做相應調整,此次天行的為newslist.
pic_url = tempdict['picUrl']
resp = requests.get(pic_url)
filename = pic_url[pic_url.rfind('/') + 1:]
try:
with open(filename, 'wb') as fs:
fs.write(resp.content)
except IOError as e:
print(e)
if __name__ == '__main__':
main()
- 2. JavaScript(html)原生方法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<!--div---載入的美女圖片存放的地方-->
<div id="photos">
</div>
<button id="load">載入</button> <!--載入資料按鈕-->
<!--用原生JS寫 先給按鈕繫結事件-->
<script type="text/javascript">
//即時呼叫函式(function(){}()) 或者+(function(){})
(function(){
//通過ID拿,然後繫結事件,這裡不考慮瀏覽器相容性問題
var btn = document.getElementById('load');
btn.addEventListener('click', function(){
//非同步請求物件,偷偷的給伺服器傳送請求物件,這裡暫時也不考慮瀏覽器相容性問題
var xhr = new XMLHttpRequest();
//JS預設只能從自己的伺服器取資料, 同源策略
//但是今天的絕大多數都提供資料介面的伺服器都設定了執行跨域取資料
//瀏覽器中支援2種協議 方式 get--拿資料,資源; post---提交 http協議
//url-統一資源定位符,就是一個地址 uniform resouce locator
//第一個引數get/第二個引數url/第三個引數true--表示非同步請求
xhr.open('get',
'http://api.tianapi.com/meinv/?key=自己的KEY&num=10', true);
//事件回撥 onreadystatechange-就緒狀態改變
xhr.onreadystatechange = function(){
//判斷伺服器響應是否完成,如果readyState==4,表示成功;伺服器響應完成 正在傳為2, 剛剛連上,還未傳資料為1
//status表示狀態,為200時,表示連線成功 伺服器正常
if (xhr.readyState == 4){
//通過從伺服器獲取的資料,對頁面進行DOM操作實現區域性重新整理
if (xhr.status == 200){
//字串解析
var obj = JSON.parse(xhr.responseText);
var mmArray = obj.newslist;
var div = document.getElementById('photos')
for (var i = 0; i < mmArray.length; i += 1){
var picUrl = mmArray[i].picUrl;
var img = document.createElement('img');
img.src = picUrl;
img.width = '360';
div.appendChild(img);
}
}
}
}
//發出請求
xhr.send()
})
}());
</script>
</body>
</html>
- 3. .get.JSON方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="photos"></div>
<button id="load">載入</button>
<script src="js/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var url = 'http://api.tianapi.com/meinv/?key=自己的KEY&num=10'
$('#load').on('click', function(){
$.getJSON(url, function(obj){
var mmArray = obj.newslist;
for (var i = 0; i < mmArray.length; i += 1){
var img = $('<img>').attr('src', mmArray[i].picUrl).width(300);
$('#load').append(img);
}
})
})
})
</script>
</body>
</html>
- 4. .ajax方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="photos"></div>
<button id="load">載入</button>
<script src="js/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var urlStr = 'http://api.tianapi.com/meinv/?key=自己的KEY&num=10'
$('#load').on('click', function(){
$.ajax({
url: urlStr,
type:'get',
dateType:'json',
success:function(obj){
var mmArray = obj.newslist;
for (var i = 0; i < mmArray.length; i += 1){
var img = $('<img>').attr('src', mmArray[i].picUrl).width(300);
$('#load').append(img);
}
}
})
})
})
</script>
</body>
</html>