跳到主要內容

發表文章

目前顯示的是有「AJAX」標籤的文章

[2021 IT鐵人賽] Day 23:專案05 - KKBOX風雲榜02 | AJAX

昨天已經找到的KKBOX用來傳資料的API,也知道各個參數的意義了,今天就實際將資料抓下來吧! 歌曲資訊 回到昨天那個API,是用JSON格式傳遞資料,資料的格式大致如下: 我們可以發現新歌的資料都放在 “newrelease” 之下,一個element就是一首歌的資訊,另外,每首歌的資訊也以key:value的形式整理的很清楚。 接著,就用之前教過的 requests.get(url) 直接取得API回傳的資料,但回傳的型態是json字串,所以再用Python本身內建的 json.loads() 函數轉成Python的list和dict資料型態。 # KKBOX華語新歌日榜 url = "https://kma.kkbox.com/charts/api/v1/daily?category=297&lang=tc&limit=50&terr=tw&type=newrelease" # 取得歌曲資訊json檔 response = requests.get(url) # 將json字串轉為Python的字典型態 data = json.loads(response.text) 既然已經轉成list和dict的型態了,再根據剛才觀察API得知的架構,要篩選資料就非常簡單,直接來看程式碼: song_list = data[ "data" ][ "charts" ][ "newrelease" ] # 取得每首歌的排名、曲名、連結、作者、時間 for song in song_list: song_rank = song[ "rankings" ][ "this_period" ] song_name = song[ "song_name" ] song_url = song[ "song_url" ] song_artist = song[ "artist_name"...

[2021 IT鐵人賽] Day 22:專案05 - KKBOX風雲榜01 | AJAX

歐嗨喲~ 大家昨天有睡飽嗎? 今天又是一個新的專案,當然一樣是爬蟲,但是我完全不用BeautifulSoup一樣可以取得資料,這是怎麼做到的? 好奇嗎? 就讓我們看下去吧! KKBOX 華語新歌日榜 今天要來爬的是KKBOX的 華語新歌日榜 ,可以看到這個網站底下列出了當天新歌的排行榜。 你心中一定想說:「反正你一定又是叫我 右鍵>>檢查 對不對?」 NONONO~ 要是這麼簡單就不用我教了,不信你可以試試看直接用requests抓,看看抓不抓的到。 url = "https://kma.kkbox.com/charts/daily/newrelease?terr=tw&lang=tc" response = requests.get(url) root = BeautifulSoup(response.text, "html.parser" ) print (root.prettify()) 的確會有回應,但你會發現你不管怎麼找,都找不到你要的資料。這是為什麼呢🤔 ? 答案其實前天就講過了,只是我沒說出來而已。沒錯,KKBOX也是一個 動態網站 ,他用的是名叫 AJAX 的技術。 什麼是AJAX? AJAX 即「 Asynchronous JavaScript and XML 」(非同步的JavaScript與XML技術),指的是一套綜合了多項技術的瀏覽器端網頁開發技術。 傳統的Web應用允許使用者端填寫表單(form),當送出表單時就向網頁伺服器傳送一個請求。伺服器接收並處理傳來的表單,然後送回一個新的網頁,但這個做法浪費了許多頻寬,因為在前後兩個頁面中的大部分HTML碼往往是相同的。由於每次應用的溝通都需要向伺服器傳送請求,應用的回應時間依賴於伺服器的回應時間。這導致了使用者介面的回應比本機應用慢得多。 與此不同,AJAX應用可以僅向伺服器傳送並取回必須的資料,並在客戶端採...