🌐 Python 自學筆記第 9 集:打開網路的門——從 GET 開始的爬蟲入門

更新 發佈閱讀 24 分鐘

你曾想過自動抓取天氣預報、即時匯率、新聞標題嗎? 這一集,我們來學 Python 怎麼開口問網路:「嘿,給我點資料好嗎?」


1️⃣ 什麼是請求?(GET 是什麼)

每次你打開一個網站,背後其實是「發出一個請求,等網路回你東西」。 而 GET 就是最常見的一種「請求方式」,意思是:「給我資料!」

我們可以用 Python 幫你說這句話——靠的就是 requests 套件。

🔹GET 請求通常用於獲取資料,不應該用於提交敏感資訊或執行會修改伺服器狀態的操作(例如刪除資料)。這是因為 GET 請求的參數會直接顯示在 URL 中。


2️⃣ requests 套件入門(你的網路小嘴巴)

首先請先安裝它(只需一次):

pip install requests

🔹 最基本的用法:

import requests

# 指定要請求的網址
url = "https://httpbin.org/get" # 測試 API,用來查看發送的請求資訊和接收到的回應

# 發送 GET 請求,取得網站回應
response = requests.get(url)

# 印出回應的 HTTP 狀態碼(200 表示成功)
print(response.status_code)

# 印出回應的文字內容(通常是 JSON 或 HTML)
print(response.text)

🔽 執行結果(簡化範例):

200
{
"args": {},
"headers": {...},
"origin": "xx.xx.xx.xx",
"url": "https://httpbin.org/get"
}

3️⃣ 資料格式介紹:文字、HTML、JSON 差在哪?

網站會把資料「包裝成不同格式」回傳給你,我們要先認得它是什麼樣子。

🔸 常見格式對比:

# JSON 範例(結構化資料)

{
"name": "Joe",
"score": 88
}

# HTML 範例(網頁結構)

<html>
<head><title>My Page</title></head>
<body><p>Hello!</p></body>
</html>

網站回應內容可能會是:

  • 純文字(text):像文字檔
  • HTML:網頁內容(<h1><p><div>)組成
  • JSON:結構化資料(長得像 dict)✅ JSON 數據很適合程式處理
  • .text 屬性會回傳 HTTP 回應的原始文字內容,不論它是 JSON、HTML 還是純文字。
  • response.json() 則會嘗試將內容解析為 JSON,如果內容不是有效的 JSON,則會拋出錯誤。

🔹 抓 JSON 回應內容:

data = response.json()
print(data["url"])

🔹 抓純文字內容(text):

text = response.text
print(text)

🔹 抓 HTML 並解析特定標籤(用 BeautifulSoup):

from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, "html.parser")
print(soup.title.text)

4️⃣ 抓 API 資料:像聊天一樣問出你要的資料

🧠 什麼是 API?

API 是英文 Application Programming Interface(應用程式介面)的縮寫。

簡單來說,它就像「網站提供給程式用的點菜窗口」:

你(程式)不需要進到資料庫內部,只要發送一個 API 請求,網站就會把你要的資料送回來。

📦 例如:氣象 API、匯率 API、笑話 API……都可以讓你「用程式問網站要資料」。

🔎 API 端點(Endpoint)通常出現在哪裡?

API 端點是網站提供給程式請求資料的專用網址。這些網址不一定會顯示在頁面上,但你可以用以下方式找到它們:

✅ 方法一:透過開發者工具觀察網頁請求

這是最常見、也是最可靠的方法。

  1. 開啟瀏覽器的「開發者工具」
    • Windows:按 F12 或 Ctrl + Shift + I
    • Mac:按 Cmd + Option + I
  2. 點選「Network(網路)」分頁
  3. 在網頁中執行某個動作(例如:按下查詢按鈕或滾動載入資料)
  4. 觀察左側出現的請求紀錄
    • 找找有沒有 XHR 或 fetch 類型的項目(代表 JavaScript 發出的 API 請求)
    • 點進去看網址(Request URL),這通常就是 API 端點

👉 範例端點看起來會像這樣:

https://api.example.com/v1/data?page=1&limit=10

✅ 方法二:查網站文件或開發者平台

大型網站或服務(如 LINE、Google、Weather API)通常有公開的 API 文件,會列出所有端點。例如:


✅ 方法三:查看 JavaScript 原始碼

有時候,網站的 JavaScript 會包含 API 網址或代碼邏輯。你可以在開發者工具的「Sources」或「Elements」分頁中搜尋關鍵字:

  • 搜尋 fetch(axios.get($.get( 等常見 AJAX 方法

補充❓什麼是 AJAX?

「Asynchronous JavaScript and XML」的縮寫,意思是:

用 JavaScript 寫的程式,可以在 不重新載入整個頁面 的情況下,向伺服器要資料,並把結果更新到畫面上。

這跟我們爬 API 有什麼關係?

很多網站「不會在一開始就把資料寫死在 HTML 裡」,而是靠 JavaScript 在背景用 AJAX 發送請求,例如:

fetch("https://example.com/api/articles?page=2")

這個請求就會送到某個 API 端點,而你在「開發者工具」裡的 Network → XHR 或 Fetch 項目中,常常就能找到這樣的請求。

🔍這些請求的網址,就是你可以用 requests.get() 發送的 API 端點!


✅ 方法四:直接使用網站提供的 SDK 或工具

有些網站會提供開發工具、介接套件(例如 LINE Messaging API 提供 Python SDK),可以用這些工具間接得知 API 的端點與格式。

<注意>

  1. 這個段落介紹的是如何從「API 端點」請求回傳JSON格式的資料
  2. 若你想抓的是網頁內容(不是 JSON):→ 用 BeautifulSoup 做「網頁爬蟲」來抓特定資料,請跳到下面5️⃣

🔹 在 Python 裡如何呼叫 API:

以下範例為使用 requests 函式庫來對一個 API 端點(Endpoint)發送 GET 請求。這個 API 端點 https://catfact.ninja/fact 回傳的是 JSON(JavaScript Object Notation,一種輕量級的資料交換格式)格式的資料

# 匯入 requests 套件,用來發送網路請求
import requests

# 向貓咪事實 API 發送 GET 請求
r = requests.get("https://catfact.ninja/fact")

# 將回應的 JSON 轉換為 Python 字典
data = r.json()

# 印出其中的 'fact' 資料(即一個貓咪冷知識)
print(data["fact"])

🔽 輸出:

Cats can rotate their ears 180 degrees.

🔹使用 params 參數向 API 發送帶有查詢字串的請求

🔸 使用參數抓多筆資料(params)

🔹 加入參數範例(帶入 limit 數量):

使用 params 參數向 API 發送帶有查詢字串的請求:例如 limit、page、type 等,視 API 文件支援而定)

url = "https://catfact.ninja/facts"
params = {"limit": 3, "page": 1, "type": "cat"}
r = requests.get(url, params=params)
print(r.json())

🔽 輸出範例:

{
"current_page": 1,
"data": [
{"fact": "Cats sleep 70% of their lives.", "length": 38},
{"fact": "A group of cats is called a clowder.", "length": 42},
{"fact": "The technical term for a cat's hairball is a bezoar.", "length": 54}
]
// 其他欄位略
}

🔽 說明:你可以控制要幾筆資料(limit)第幾頁(page)資料類型(type)等。不同 API 支援的參數不同,請參考官方文件來設計查詢。這樣能幫助你更彈性地篩選或分頁取得資料,非常實用!


🔸 笑話 API 實作練習

很多網站提供「API」讓程式存取資料。常見範例:氣象、匯率、笑話、新聞。

🔹 以即時笑話 API 為例:

# 匯入 requests 套件,準備發送請求
import requests

# 指定笑話 API 的網址
url = "https://official-joke-api.appspot.com/random_joke"

# 發送 GET 請求取得笑話資料
r = requests.get(url)

# 將回傳的 JSON 轉換為 Python 字典
data = r.json()

# 印出笑話的前段(setup)
print("😂", data["setup"])

# 印出笑話的後段(punchline)
print("👉", data["punchline"])

🔽 輸出:

😂 What did the zero say to the eight?
👉 Nice belt!

5️⃣ 抓 HTML 網頁內容(基礎爬蟲)

若對方沒有提供 API,我們也可以「從網頁中提取資料」——這就叫做爬蟲!

我們會搭配 BeautifulSoup 套件:

🔧 BeautifulSoup 是什麼?

它是 Python 最常用的 HTML 解析工具,可以讓你很輕鬆地:

  • 找出 <title><p><a> 等標籤內容
  • 篩選出你要的資料位置,不用自己寫複雜字串處理

🔽 安裝方式:

pip install beautifulsoup4

這個套件全名是 beautifulsoup4,安裝一次即可終生使用 ✨

🔹 抓網頁標題:

你可以透過 BeautifulSoup 抓出網頁中的 <title> 標籤,通常就是瀏覽器頁籤顯示的名稱。

# 匯入必要套件
import requests
from bs4 import BeautifulSoup

# 指定目標網站網址
url = "https://vocus.cc/salon/682a4bb9fd897800011f8d24"

# 發送 GET 請求取得網頁原始碼
r = requests.get(url)

# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(r.text, "html.parser")

# 抓出並印出 <title> 標籤的文字內容(網頁標題)
print(soup.title.text)

🔽 輸出:

Dolly的奇妙育兒之旅|方格子 vocus

你也可以進一步「找出所有超連結」,這在整理網站資訊時非常實用:

🔹 抓出所有連結與文字:

# 匯入必要套件
import requests
from bs4 import BeautifulSoup

# 指定目標網站網址
url = "https://vocus.cc/salon/682a4bb9fd897800011f8d24"

# 發送 GET 請求取得網頁原始碼
r = requests.get(url)

# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(r.text, "html.parser")

# 找出所有 <a> 標籤(超連結)
links = soup.find_all("a")

# 逐一印出連結的文字與網址
for link in links:
text = link.text.strip()
href = link.get("href")
if href: # 確保 href 存在
print(f"文字:{text} → 連結:{href}")

🔽 輸出範例:

文字:Python 新手學習筆記 第2集:資料結構入門 → 連結:/article/6861306cfd89780001b4b31b
文字:🧾 Python 新手學習筆記 第 4 集:字典進階應用{dict} → 連結:/article/686e2386fd897800013f0aad
文字:Python 自學筆記第 6 集:Lambda 函式與 sorted()排序應用 → 連結:/article/686f3628fd897800017ee661
...以下略

6️⃣ 進階技巧補充:headers 與 pandas 應用

🔸 有些網站需要「假裝是瀏覽器」才能讀資料

有些網站不給預設 requests 存取,這時我們可以加上一些 headers 模擬瀏覽器:

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}

url = "https://example.com"
r = requests.get(url, headers=headers)
print(r.text)

🔽 說明:這樣可以避免網站擋住你的程式。常見 header 是 User-Agent,有些網站可能還會檢查 RefererAccept-Language

🔸 使用 Session 提高效率

當需要多次請求時,使用 Session 可以重複使用連線,提高效率:

import requests

# 建立 Session 物件
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})

# 多次請求會重複使用相同的 headers 和 cookies
r1 = session.get("https://example.com/page1")
r2 = session.get("https://example.com/page2")

🔸 把爬到的資料變成表格(用 pandas)

如果你爬到的是一堆 JSON、或有固定格式的文字,可以用 pandas 快速整理:

import pandas as pd
import requests

url = "https://catfact.ninja/facts?limit=5"
r = requests.get(url)
data = r.json()

# 把 'data' 欄轉成 pandas DataFrame
facts = pd.DataFrame(data["data"])
print(facts)

🔽 輸出會是一個表格:

                                fact  length
0 Cats can rotate their ears 180... 57
1 A group of cats is called a cl... 42
...

這樣你就可以開始過濾、分析、輸出成 CSV 或圖表囉!📊

🔍 如果想儲存為 CSV,只需:

facts.to_csv("cat_facts.csv", index=False)

下一集我們會深入處理 pandas 讀寫表格與整理資料的技巧!


7️⃣ 錯誤處理與防呆建議

🔸 基本狀態碼檢查

import requests

r = requests.get("https://some.site")
if r.status_code == 200:
print("成功取得資料!")
elif r.status_code == 404:
print("網頁不存在")
elif r.status_code == 403:
print("禁止存取")
else:
print(f"出錯了:{r.status_code}")

🔸 完整的錯誤處理

在發送 requests 或處理回應資料時,有可能遇到「網址錯誤」「伺服器失聯」「資料不是 JSON」等問題,這時候使用 try...except 可以讓你的程式不中斷,優雅地處理錯誤。

import requests
from requests.exceptions import RequestException, Timeout, ConnectionError

try:
r = requests.get(url, timeout=10) # 加入 10 秒超時設定
r.raise_for_status() # 自動檢查 HTTP 錯誤狀態碼
data = r.json()
print("成功取得資料:", data)
except ConnectionError:
print("網路連線失敗,請檢查網路狀態")
except Timeout:
print("請求超時,伺服器回應過慢")
except ValueError: # JSON 解析錯誤
print("回應不是有效的 JSON 格式")
except RequestException as e:
print(f"請求失敗:{e}")

🛡️ 爬蟲倫理與注意事項

在進行網路爬蟲時,請務必遵守以下原則:

🔸 基本守則

  1. 尊重 robots.txt:檢查網站的 robots.txt 文件(通常在 網址/robots.txt
  2. 控制請求頻率:避免對伺服器造成負擔
  3. 遵守使用條款:閱讀並遵守網站的服務條款
  4. 著作權意識:注意資料的使用權限和版權問題

🔸 控制爬蟲速度

import time
import requests

urls = ["https://example.com/page1", "https://example.com/page2", "https://example.com/page3"]

for url in urls:
r = requests.get(url)
print(f"已爬取:{url}")
time.sleep(1) # 每次請求間暫停 1 秒,避免對伺服器造成過大負擔

🔸 檢查 robots.txt 範例

python

import requests

# 檢查網站的 robots.txt
robots_url = "https://example.com/robots.txt"
r = requests.get(robots_url)
print(r.text)

✅ 實戰練習題

👉 練習 1:基礎 API 爬取

試著用 requests.get() 抓下這個網址:https://catfact.ninja/fact並印出裡面的 fact 文字

👉 練習 2:網頁爬取

抓取 https://www.python.org 網頁,列出首頁所有連結(提示:抓取 <a> 標籤)

👉 練習 3:過濾特定連結

過濾出只包含 "python.org" 的內部連結

for link in soup.find_all("a"):
href = link.get("href")
if href and "python.org" in href:
print(href)

🔽 輸出會列出像是:

https://www.python.org/about/
https://www.python.org/jobs/
...

👉 練習 4:處理 API 參數

嘗試修改 https://catfact.ninja/factslimit 參數,取得不同數量的貓咪事實

👉 練習 5:資料儲存

將爬取的資料儲存為 CSV 檔案,方便後續分析

import pandas as pd
import requests

# 爬取資料
url = "https://catfact.ninja/facts?limit=10"
r = requests.get(url)
data = r.json()

# 轉換為 DataFrame 並儲存
df = pd.DataFrame(data["data"])
df.to_csv("cat_facts.csv", index=False, encoding="utf-8")
print("資料已儲存至 cat_facts.csv")



留言
avatar-img
Dolly的奇妙育兒之旅
20會員
132內容數
一串感恩又心累、感謝又荒謬的心路歷程
2025/07/17
在多益文法中,詞性辨析是最基礎也最重要的一環。許多題目看似考詞彙,實則在考你對詞性的理解。只要能精準判斷空格所需的詞性,就能大幅提高答題正確率。 詞性辨析核心概念:位置決定詞性! 英文句子中,每個單字都有其特定的「位置」和「職責」。就像樂團裡的每種樂器,都有自己的定位,才能合奏出和諧的樂章。掌握
Thumbnail
2025/07/17
在多益文法中,詞性辨析是最基礎也最重要的一環。許多題目看似考詞彙,實則在考你對詞性的理解。只要能精準判斷空格所需的詞性,就能大幅提高答題正確率。 詞性辨析核心概念:位置決定詞性! 英文句子中,每個單字都有其特定的「位置」和「職責」。就像樂團裡的每種樂器,都有自己的定位,才能合奏出和諧的樂章。掌握
Thumbnail
2025/07/16
🥇 什麼是 HTML? HTML 是「超文字標記語言」(HyperText Markup Language),用來建立網頁的骨架。 超文字(HyperText):可以建立「連結」,點一下就跳頁。 標記語言(Markup Language):用**標籤(tag)**來「標示」這段內容的用途。
2025/07/16
🥇 什麼是 HTML? HTML 是「超文字標記語言」(HyperText Markup Language),用來建立網頁的骨架。 超文字(HyperText):可以建立「連結」,點一下就跳頁。 標記語言(Markup Language):用**標籤(tag)**來「標示」這段內容的用途。
2025/07/13
資料越來越多,list 和 dict 有點不夠用了? 這一集我們來學會「怎麼把資料存得更漂亮、讀得更有效率」。
Thumbnail
2025/07/13
資料越來越多,list 和 dict 有點不夠用了? 這一集我們來學會「怎麼把資料存得更漂亮、讀得更有效率」。
Thumbnail
看更多
你可能也想看
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News