พื้นฐาน REST API สำหรับรวบรวมข้อมูล
HTTP GET/POST ส่วนหัว การยืนยันตัวตน (คีย์ API, Bearer) และการแยกวิเคราะห์ JSON ด้วย requests
พื้นฐาน REST API สำหรับรวบรวมข้อมูล เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใด API จึงสำคัญต่อปัญญาประดิษฐ์
โมเดลจะดีได้เท่ากับข้อมูลที่ใช้เท่านั้น API บนเว็บช่วยให้คุณรวบรวมข้อมูลที่สดใหม่และมีโครงสร้างได้ตามต้องการ เช่น สภาพอากาศ ราคา โพสต์บนสื่อสังคมออนไลน์ และชุดข้อมูลสาธารณะ แทนที่จะพึ่งพาไฟล์แบบคงที่เพียงไฟล์เดียว
หลักสูตรนี้ใช้ภาษาไพธอนและไลบรารี requests ยอดนิยมเพื่อดึงและจัดเก็บข้อมูลดังกล่าว
REST API คืออะไร
REST APIเปิดให้เข้าถึงทรัพยากรผ่าน HTTP คุณส่งคำขอไปยัง URL (จุดปลายทาง) และได้รับข้อมูลกลับมา ซึ่งโดยปกติจะอยู่ในรูปแบบ JSON
วิธีการ HTTP หลักมีดังนี้:
GET— อ่านข้อมูลPOST— สร้างข้อมูลPUT/PATCH— ปรับปรุงข้อมูลDELETE— ลบข้อมูล
สำหรับการรวบรวมข้อมูล โดยส่วนใหญ่คุณจะใช้ GET
คำขอ GET แรก
requests.get(url)จะส่งคำขอ GET และส่งคืนอ็อบเจ็กต์ การตอบกลับ การตอบกลับจะเก็บรหัสสถานะ ส่วนหัว และเนื้อหาไว้
import requests
resp = requests.get("https://api.example.com/users")
print(resp.status_code) # 200
print(resp.text[:200]) # raw body as a stringตรวจสอบ response.status_code
รหัสสถานะบอกว่าคำขอสำเร็จหรือไม่:
200สำเร็จ301/302เปลี่ยนเส้นทาง400คำขอไม่ถูกต้อง401/403มีปัญหาด้านการยืนยันตัวตน404ไม่พบข้อมูล429ถูกจำกัดอัตรา500เซิร์ฟเวอร์เกิดข้อผิดพลาด
resp = requests.get(url)
if resp.status_code == 200:
print("Success")
else:
print("Failed:", resp.status_code)แยกวิเคราะห์ JSON ด้วย response.json()
API ส่วนใหญ่ส่งคืน JSON response.json()จะแยกวิเคราะห์เนื้อหาให้เป็นพจนานุกรมและรายการของไพธอนโดยอัตโนมัติ
อย่าแยกวิเคราะห์ JSON ด้วยตนเอง — .json()จะจัดการให้ และจะแจ้งข้อผิดพลาดที่ชัดเจนหากเนื้อหาไม่ใช่ JSON ที่ถูกต้อง
resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])ส่งพารามิเตอร์คำค้นหาด้วย params
กรองและกำหนดค่าคำขอด้วย พารามิเตอร์คำค้นหา ส่งพจนานุกรมให้กับ params แล้ว requests จะสร้าง URL ให้คุณพร้อมจัดการการเข้ารหัส
ตัวอย่างนี้จะกลายเป็น ?city=London&units=metric ใน URL
params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())การส่งส่วนหัว
ส่วนหัวใช้ส่งข้อมูลเมทาดาทา เช่น ประเภทเนื้อหา ตัวแทนผู้ใช้ หรือคีย์/โทเค็นของ API ส่งส่วนหัวเหล่านี้เป็นพจนานุกรมให้กับ headers
API จำนวนมากต้องใช้ส่วนหัว Authorization เพื่ออนุญาตให้เข้าถึงข้อมูล
headers = {
"Authorization": "Bearer YOUR_TOKEN",
"User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())raise_for_status() สำหรับโค้ดที่ทนทาน
แทนที่จะตรวจสอบรหัสด้วยตนเอง ให้เรียกใช้ resp.raise_for_status() ฟังก์ชันนี้จะทำให้เกิด HTTPError เมื่อได้รับการตอบกลับในช่วง 4xx หรือ 5xx ทำให้ความล้มเหลวถูกแจ้งอย่างชัดเจน
ครอบคำสั่งนี้ด้วย try/except เพื่อจัดการข้อผิดพลาดอย่างเหมาะสม
import requests
try:
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()
except requests.HTTPError as e:
print("HTTP error:", e)
except requests.RequestException as e:
print("Network error:", e)กำหนดระยะหมดเวลาเสมอ
หากไม่มี timeout เซิร์ฟเวอร์ที่ค้างอาจทำให้สคริปต์หยุดรอไปตลอดกาล ควรส่งค่าไปด้วยเสมอ (หน่วยเป็นวินาที)
สำหรับลูปการรวบรวมข้อมูลที่เรียกใช้จุดปลายทางนับพันแห่ง การไม่มีระยะหมดเวลาเป็นสาเหตุที่พบบ่อยที่ทำให้งานหยุดค้าง
resp = requests.get(url, timeout=10) # give up after 10 secondsนำการเชื่อมต่อกลับมาใช้ใหม่ด้วย Session
requests.Sessionจะนำการเชื่อมต่อ TCP พื้นฐานกลับมาใช้ใหม่ระหว่างคำขอ และช่วยให้คุณกำหนดส่วนหัวเพียงครั้งเดียว สำหรับการเรียกไปยังโฮสต์เดิมหลายครั้ง วิธีนี้จะเร็วขึ้นมาก
import requests
session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})
for uid in [1, 2, 3]:
resp = session.get(f"https://api.example.com/users/{uid}")
print(resp.json()["name"])
session.close()ตัวช่วยดึงข้อมูลที่เป็นระเบียบ
รวมรูปแบบนี้ไว้ในฟังก์ชันที่นำกลับมาใช้ใหม่ได้ โดยตั้งค่าเซสชัน ใช้ระยะหมดเวลา แจ้งข้อผิดพลาดเมื่อเกิดปัญหา และส่งคืน JSON ที่แยกวิเคราะห์แล้ว
คุณจะต่อยอดจากตัวช่วยนี้ในบทถัดไปสำหรับการแบ่งหน้าและการจัดเก็บข้อมูล
def fetch_json(session, url, params=None):
resp = session.get(url, params=params, timeout=10)
resp.raise_for_status()
return resp.json()ตรวจสอบอย่างรวดเร็ว: คำขอที่ทนทาน
คุณต้องการให้โค้ดทำให้เกิดข้อยกเว้นโดยอัตโนมัติเมื่อได้รับการตอบกลับ 404 หรือ 500
สรุป: พื้นฐาน REST API
ตอนนี้คุณสามารถรวบรวมข้อมูลผ่าน HTTP ได้แล้ว:
requests.get(url, params=..., headers=...)เพื่อส่งคำขอresponse.status_codeและraise_for_status()เพื่อตรวจหาความล้มเหลวresponse.json()เพื่อแยกวิเคราะห์เนื้อหาtimeoutเพื่อป้องกันการหยุดค้างrequests.Sessionเพื่อนำการเชื่อมต่อและส่วนหัวกลับมาใช้ใหม่
บทถัดไป: การรวบรวมชุดข้อมูลที่ครอบคลุมหลายหน้า
คำถามที่พบบ่อย
บทเรียน “พื้นฐาน REST API สำหรับรวบรวมข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน REST API สำหรับรวบรวมข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน REST API สำหรับรวบรวมข้อมูล”
HTTP GET/POST ส่วนหัว การยืนยันตัวตน (คีย์ API, Bearer) และการแยกวิเคราะห์ JSON ด้วย requests คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน REST API สำหรับรวบรวมข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน REST API สำหรับรวบรวมข้อมูล
- การแบ่งหน้าและรวบรวมชุดข้อมูลขนาดใหญ่
- การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ
- การใช้งาน API ข้อมูลสาธารณะ