Python 也能扮演瀏覽器,這就是爬蟲的基礎:
# pip install requests
import requests
response = requests.get("https://jiu-tao.com")
print(response.status_code) # 200 = 成功Python 也能扮演瀏覽器,這就是爬蟲的基礎:
# pip install requests
import requests
response = requests.get("https://jiu-tao.com")
print(response.status_code) # 200 = 成功# GET 請求
r = requests.get("https://api.example.com/data")
print(r.json())
# 帶參數
r = requests.get("https://api.example.com/search",
params={"q": "Python", "page": 1})
# POST 請求
r = requests.post("https://api.example.com/login",
json={"username": "ding"})
# 錯誤處理
try:
r = requests.get("https://bad-site.com", timeout=5)
r.raise_for_status()
except requests.exceptions.Timeout:
print("請求超時")# pip install beautifulsoup4
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, "html.parser")
title = soup.find("title").text
all_links = soup.find_all("a")
for link in all_links[:5]:
print(link.get("href"), link.text)
# CSS 選擇器
articles = soup.select("article h2")
prices = soup.select(".price")import requests
def get_weather(city="臺北"):
url = "https://opendata.cwa.gov.tw/api/v1/rest/datastore/F-C0032-001"
params = {"Authorization": "YOUR_API_KEY", "locationName": city}
try:
r = requests.get(url, params=params, timeout=10)
r.raise_for_status()
data = r.json()
loc = data["records"]["location"][0]
print(f"🌤️ {loc['locationName']} 天氣:")
for wx in loc["weatherElement"]:
if wx["elementName"] == "Wx":
print(wx["time"][0]["parameter"]["parameterName"])
except Exception as e:
print(f"查詢失敗: {e}")
import requests
# GET 請求帶參數
params = {"q": "Python爬蟲", "page": 1}
r = requests.get("https://api.example.com/search", params=params)
print(r.url) # https://api.example.com/search?q=Python爬蟲&page=1
# POST 請求送 JSON
data = {"name": "丁丁", "score": 95}
r = requests.post("https://api.example.com/users", json=data)
# 自訂 headers(模擬瀏覽器)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Accept-Language": "zh-TW,zh;q=0.9"
}
r = requests.get("https://example.com", headers=headers)
# 處理回應
print(r.status_code) # 200 表示成功
if r.status_code == 200:
data = r.json() # JSON → Python dict
elif r.status_code == 404:
print("頁面不存在")
from bs4 import BeautifulSoup
import requests
url = "https://books.toscrape.com"
soup = BeautifulSoup(requests.get(url).text, "html.parser")
# CSS 選擇器(最推薦的方式)
titles = soup.select("h3 a") # 所有書名連結
prices = soup.select(".price_color") # class 選擇器
for title, price in zip(titles[:5], prices[:5]):
print(f"{title['title']} — {price.text}")
# 常用搜尋方法
soup.find("h1") # 找第一個 h1
soup.find_all("a", class_="link") # 找特定 class 的 a
soup.select("a[href*='catalogue']") # CSS: href 含 catalogue 的連結