快轉到主要內容
  1. Posts/

爬蟲篇 2 —— Python requests

·1 分鐘
Data Web Scraping Data Requests Web Scraping
目錄

requests 是 Python 中非常常用的 HTTP 請求庫,能幫助我們以簡潔的方式發送 GET 或 POST 請求,是進行網頁爬蟲時的核心工具之一。

安裝 requests
#

在命令提示字元(CMD)中輸入以下指令安裝:

pip install requests

發送 GET 請求
#

我們可以用下列方式向網站發送一個 GET 請求:

import requests

url = "http://www.example.com"  # 注意要加上 http:// 或 https://

response = requests.get(url)

檢查回應狀態碼
#

你可以用 response.status_code 來檢查是否成功:

if response.ok:
    print("請求成功!")
    print(response.text)
else:
    print(f"請求失敗,狀態碼:{response.status_code}")

加入 headers
#

為什麼要加入 headers?
#

在實際爬蟲過程中,有些網站會檢查請求的「身份」,以判斷是不是由瀏覽器發出的正常訪問。如果使用程式發送請求而沒加上適當的 headers,網站可能會拒絕回應或直接返回錯誤頁面。

當我們用瀏覽器上網時,瀏覽器會自動加上一些請求標頭(headers),例如 User-Agent,它能告訴伺服器「我是用 Chrome/Firefox 發出的請求」。 但用 requests.get() 預設沒有這些 headers,網站就會懷疑這是機器人,進而封鎖或返回錯誤頁。

為了讓請求更像「真人操作」,我們通常會自己加入常見的 headers。

範例:加入 User-Agent
#

import requests

url = "http://www.example.com"

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

response = requests.get(url, headers=headers)

if response.ok:
    print("請求成功!")
    print(response.text)
else:
    print(f"請求失敗,狀態碼:{response.status_code}")

其他常見 headers(可視情況加入)
#

headers = {
    "User-Agent": "Mozilla/5.0",
    "Accept-Language": "zh-TW,zh;q=0.9",
    "Referer": "https://www.google.com"
}

這樣可以模仿「正常使用者點進網站」的情境,增加成功取得資料的機率。

相關文章

爬蟲篇 3 —— 用 Beautiful Soup 解析 HTML
·1 分鐘
Data Web Scraping Data Requests Web Scraping
爬蟲篇 1 —— HTTP 請求與回應
·1 分鐘
Data Web Scraping Data Requests Web Scraping
用 `get_dummies` 將分類變數轉換為數值型資料
·1 分鐘
Data Data Basics Data Pandas