Web Scraping & Bots · 강의

API 통합

봇을 외부 API에 연결해 데이터를 보강하고 작업을 트리거하거나 다른 서비스와 상호 작용하도록 합니다.

레슨 3/411개 단계

API 통합은(는) CoddyKit의 무료 Web Scraping & Bots 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Web Scraping & Bots 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Web Scraping & Bots 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

Bots & APIs: A Powerful Combo

You've learned to automate browser interactions and scrape web pages. But what if you need structured data, or to trigger actions on another service?

This is where APIs (Application Programming Interfaces) come in! APIs provide a direct, organized way for your bot to communicate with other software systems.

APIs vs. Web Scraping

While web scraping involves parsing HTML from web pages, APIs offer data in a more machine-readable format, typically JSON or XML.

  • Web Scraping: Best for public data on websites without APIs, or complex UI interactions.
  • API Integration: Ideal for structured data, performing actions (like creating a post), and when an API is explicitly provided.

Often, the most powerful bots combine both!

API Basics: Endpoints & Methods

APIs are accessed via endpoints, which are specific URLs. You interact with them using standard HTTP methods:

  • GET: To retrieve data (like reading a post).
  • POST: To send new data (like creating a post).
  • PUT/PATCH: To update existing data.
  • DELETE: To remove data.

For bots, GET and POST are the most common.

Making a Simple GET Request

Let's use Python's requests library to fetch some data from a public test API. We'll use jsonplaceholder.typicode.com which provides fake data.

Try running this example:

import requests

def main():
    api_url = "https://jsonplaceholder.typicode.com/todos/1"
    response = requests.get(api_url)
    
    print(f"Status Code: {response.status_code}")
    print(response.text)

if __name__ == "__main__":
    main()

Parsing JSON Responses

APIs commonly return data in JSON (JavaScript Object Notation) format. It's a lightweight, human-readable data interchange format.

The requests library can automatically parse JSON for you, turning it into a Python dictionary. Let's extract specific fields from our previous example.

import requests
import json

def main():
    api_url = "https://jsonplaceholder.typicode.com/todos/1"
    response = requests.get(api_url)
    
    if response.status_code == 200:
        todo_item = response.json() # Parse JSON into a Python dict
        print(f"User ID: {todo_item['userId']}")
        print(f"Title: {todo_item['title']}")
        print(f"Completed: {todo_item['completed']}")
    else:
        print("Failed to fetch data.")

if __name__ == "__main__":
    main()

API Authentication Concepts

Many APIs require authentication to ensure only authorized users or bots can access their data or services. Common methods include:

  • API Keys: A unique string sent with each request.
  • Tokens: Often generated after a login, valid for a certain period.
  • OAuth: A more complex standard for secure delegation of access.

For simple bots, API keys are often used.

Using API Keys in Requests

API keys are typically passed as a query parameter in the URL or as an HTTP header. requests makes this easy with the params argument.

This example shows how you would pass a key (using a fictional API for demonstration).

import requests

def main():
    # This is a placeholder for demonstration.
    # In a real scenario, use a valid API key.
    api_key = "YOUR_DUMMY_API_KEY_HERE"
    search_term = "bot automation"
    
    # Fictional API endpoint requiring a key
    api_url = "https://api.example.com/search"
    
    params = {
        "q": search_term,
        "apiKey": api_key # API key as a query parameter
    }
    
    response = requests.get(api_url, params=params)
    print(f"Request URL: {response.url}")
    print(f"Status Code: {response.status_code}")
    # In a real app, you'd process response.json()

if __name__ == "__main__":
    main()

Sending Data with POST Requests

If your bot needs to submit data, like creating a new entry or updating information, you'll use a POST request. The data payload is typically sent in the request body.

requests handles sending JSON data in the body automatically using the json parameter.

import requests
import json

def main():
    api_url = "https://jsonplaceholder.typicode.com/posts"
    
    new_post_data = {
        "title": "Bot-Generated Post",
        "body": "This is content created by our bot!",
        "userId": 1
    }
    
    # The 'json' parameter automatically sets Content-Type
    response = requests.post(api_url, json=new_post_data)
    
    print(f"Status Code: {response.status_code}")
    if response.status_code == 201: # 201 Created is common for successful POST
        print("Post created successfully!")
        print(response.json()) # API returns the created item
    else:
        print("Failed to create post.")
        print(response.text)

if __name__ == "__main__":
    main()

Robust Error Handling for APIs

API calls can fail due to network issues, incorrect requests, or server errors. Your bot should handle these gracefully.

  • Check response.status_code (e.g., 200 for OK, 404 for Not Found, 500 for Server Error).
  • Use response.raise_for_status() to automatically raise an HTTPError for bad responses.
  • Wrap calls in try-except blocks to catch network-related errors.
import requests

def main():
    # Intentional bad URL to show error handling
    api_url = "https://jsonplaceholder.typicode.com/nonexistent_endpoint"
    
    try:
        response = requests.get(api_url, timeout=5) # Set a timeout
        response.raise_for_status() # Raises HTTPError for 4xx/5xx responses
        print(f"Status Code: {response.status_code}")
        print("Successfully fetched data.")
    except requests.exceptions.HTTPError as err:
        print(f"HTTP Error occurred: {err}")
        print(f"Status Code: {response.status_code}")
    except requests.exceptions.ConnectionError as err:
        print(f"Connection Error occurred: {err}")
    except requests.exceptions.Timeout as err:
        print(f"Timeout Error occurred: {err}")
    except requests.exceptions.RequestException as err:
        print(f"An unexpected error occurred: {err}")

if __name__ == "__main__":
    main()

Quick Check: API Interaction

Which of the following are common ways bots interact with APIs?

Recap & Next Steps

Great job! You've learned how to integrate your bots with APIs:

  • APIs provide structured data and allow bots to trigger actions.
  • You use GET for fetching and POST for sending data.
  • Python's requests library simplifies API calls.
  • JSON is the common data format, easily parsed into Python dictionaries.
  • Authentication (like API keys) is crucial for many APIs.
  • Robust error handling is key for reliable bot operations.

Combining web scraping with API integration allows your bots to perform more complex and powerful workflows!

무료로 시작

AI 튜터와 함께 Python을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
12
레슨
48

자주 묻는 질문

“API 통합” 강의는 무료인가요?

네 — “API 통합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Web Scraping & Bots 강의 전체를 잠금 해제할 수 있습니다. Web Scraping & Bots 강의에는 총 4개의 강의가 포함되어 있습니다.

“API 통합”에서 뭘 배우나요?

봇을 외부 API에 연결해 데이터를 보강하고 작업을 트리거하거나 다른 서비스와 상호 작용하도록 합니다. 브라우저에서 직접 실행하는 실습 코드로 Web Scraping & Bots을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Web Scraping & Bots을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Web Scraping & Bots은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“API 통합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Web Scraping & Bots 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Web Scraping & Bots 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 사용자 인증 처리
  2. 복잡한 사용자 여정 모방
  3. API 통합
  4. 세션과 쿠키 관리하기
← Web Scraping & Bots(으)로 돌아가기