728x90

 

 

리스트 컴프리헨션(List Comprehension)

 

리스트 컴프리헨션이란 마치 요리를 할 때 필요한 재료를 한 번에 담을 수 있는 멋진 바구니와 같습니다.

 

Python에서 리스트를 보다 간결하고 효율적으로 만들 수 있는 아주 유용한 방법입니다.

 

기존에 for 루프를 사용해 리스트를 생성하는 것보다 훨씬 읽기 쉽고, 코드도 깔끔하게 작성할 수 있어요.

 

예를 들어 보겠습니다.

 


기존에는 이렇게 작성했다면

numbers = []
for x in range(10):
    numbers.append(x * 2)
print(numbers)

 

여기서 numbers 리스트에는 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]이 들어갑니다.

 

꽤 많은 줄의 코드죠?

 

그런데 리스트 컴프리헨션을 사용하면 이렇게 단순해집니다

numbers = [x * 2 for x in range(10)]
print(numbers)

 

훨씬 간단하게 끝나죠?

 

이런 식으로 리스트 컴프리헨션은 복잡한 작업도 간단하게 바꿔줍니다.

 

이걸 사용하면 코드가 훨씬 명료하고 보기 좋답니다.

 

조건이 포함된 리스트 컴프리헨션 리스트 컴프리헨션은 단순히 리스트를 만드는 것에 그치지 않아요.

 

특정 조건을 추가할 수도 있어요.

 

예를 들어, 0부터 9까지의 숫자 중에서 짝수에만 2를 곱한 리스트를 만들어 보겠습니다.


기존 방식

even_numbers = []
for x in range(10):
    if x % 2 == 0:
        even_numbers.append(x * 2)
print(even_numbers)

 

하지만 리스트 컴프리헨션을 사용하면 이렇게 간단해집니다

pairs = [(x, y) for x in [1, 2, 3] for y in [4, 5, 6]]
print(pairs)

 

중첩 루프도 한 줄로 깔끔하게 처리할 수 있습니다.

 

리스트 컴프리헨션은 이처럼 복잡한 로직도 간단하게 만들어 줍니다.

 

리스트 컴프리헨션을 연습하다 보면

 

복잡한 코드도 손쉽게 간결하게 만들 수 있습니다.

 

감사합니다.

 

 

 

 

 

 

 

 

728x90
반응형
728x90

1

 

오늘은 뉴욕타임즈의 기사 데이터를 수집해 보겠습니다.

 

https://developer.nytimes.com/

 

https://developer.nytimes.com/

 

developer.nytimes.com

 

먼저 뉴욕타임즈의 API를 가지고 와야합니다.

회원가입을 해준다음

 

 

회원 가입이 완료되면 API Key를 받아야 합니다.

그러기 위해서 자신의 정보를 눌러 Apps를 눌러 NEW APP을 생성해주세요.

 

 

그 다음에는

App Name 과 Description을 자신이 알기 편하게 작성 후

Most Popular API를 Enable 클릭해줍니다.

 

저희는 가장 인기있는 기사들을 크롤링 해올 예정이니깐요

클릭하시고 Save를 해주시면 됩니다.

그러면 API Key를 받으실 수 있습니다.

 

 

그럼 이 API key를 복사해준 다음

 

2

 

파이썬으로 로직을 짜보겠습니다.

 

 

 

뉴욕 타임즈에서 API 활용하는 방법에 대해 나와있는데요

항상 해당 사이트에서 제공하는 Document는 읽어보시는게 좋습니다.

차근 차근 읽어보시면 누구나 다 하실 수 있습니다.

 

Get most emailed articles for the last day: 지난 하루 동안 가장 많이 이메일로 전송된 기사

/emailed/1.json

 

Get most shared articles on Facebook for the last day: 지난 하루 동안 Facebook에서 가장 많이 공유된 기사

/shared/1/facebook.json

 

Get most viewed articles for the last seven days: 지난 7일간 가장 많이 본 기사

/viewed/7.json

 

그리고 .json 앞에 있는 숫자는 기간을 뜻합니다.

원하시는 기간을 적으시면 됩니다.

 

파이썬 코드는 아래와 같이 간단합니다.

import requests

# API 키와 엔드포인트 설정
api_key = 'API_KEYS를 복사해서 여기에 넣으시면 됩니다.'
 
 

# API 요청
response = requests.get(url)
if response.status_code == 200:
    data = response.json()
 
    for article in data['results']:
        print(f"Title: {article['title']}")
        print(f"URL: {article['url']}\n")
 
else:
    print(f"Failed to fetch data. Status code: {response.status_code}")

 

Result 결과값 : 

 

오늘의 결과값들이 나왔는데요

 

여기서 좀 더 추가해서 해보겠습니다.

 

Most News에서 Title을 한글로 번역하는 로직을 추가해보겠습니다.

 

 

pip install deep-translator

 

먼저 터미널에서 라이브러리를 추가해주세요.

 

그리고 

 

from deep_translator import GoogleTranslator

 

# 번역 수행
        translated_title = GoogleTranslator(source='en', target='ko').translate(original_title)

 

로직을 추가하겠습니다.

 

 

그럼 이렇게 한글로 해석되는 제목까지 나오게 됩니다!

 

마지막 최종 코드입니다.

import sys
import io
import requests
from deep_translator import GoogleTranslator

# 출력 스트림의 기본 인코딩 설정
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')

# API 키와 엔드포인트 설정
api_key = 'Your API KEY'
url = f'https://api.nytimes.com/svc/mostpopular/v2/viewed/1.json?api-key={api_key}'

# API 요청
response = requests.get(url)
if response.status_code == 200:
    data = response.json()
    for article in data['results']:
        original_title = article['title']  # 원본 제목
        # 번역 수행
        translated_title = GoogleTranslator(source='en', target='ko').translate(original_title)
        print(f"Original Title: {original_title}")
        print(f"Translated Title: {translated_title}")
        print(f"URL: {article['url']}\n")
else:
    print(f"Failed to fetch data. Status code: {response.status_code}")

 

감사합니다.

728x90
반응형
728x90

 

1

 

가장 쉽고 빠르게 구글 트랜드에서 실시간 검색 키워드 가져오는 방법

 

먼저 Test 겸 키워드를 넣어서 가져오겠습니다.

 

import sys
from pytrends.request import TrendReq
import time

 

 

  • sys: 파이썬 인터프리터와 관련된 시스템 기능을 다룹니다. 이 코드에서는 출력 인코딩을 설정하기 위해 사용합니다.
  • pytrends.request.TrendReq: PyTrends 라이브러리의 핵심 클래스입니다. 이를 통해 구글 트렌드 데이터를 요청할 수 있습니다.
  • time: 일정 시간 간격으로 요청을 보내기 위해 사용합니다. 구글 트렌드에서 너무 많은 요청을 보내면 차단될 수 있으므로 간격 조정이 중요합니다.

 

 

# UTF-8 인코딩 출력
sys.stdout.reconfigure(encoding='utf-8')

 

 

  • 파이썬의 출력 스트림(sys.stdout)의 기본 인코딩을 UTF-8로 변경합니다.
  • 한국어 출력이 깨지지 않도록 해줍니다.
  • 이 설정이 없으면 터미널이나 로그에서 한글이 ����처럼 깨져 보일 수 있습니다.

 

 

# PyTrends 설정
pytrends = TrendReq(hl='ko', tz=360)

 

TrendReq 초기화: 구글 트렌드 데이터를 요청하기 위해 PyTrends 객체를 생성합니다.

  • hl='ko': 데이터를 한국어로 가져옵니다.
  • tz=360: 한국 시간(UTC+9)을 기준으로 데이터를 처리합니다.

 

# 키워드 리스트
keywords = ['파이썬', '머신 러닝']

 

그럼 Test로 원하는 키워드를 배열로 가져오겠습니다.

검색 해보고 싶은 키워드를 배열에 담으면 됩니다.

 

for keyword in keywords:
    try:
        pytrends.build_payload([keyword], timeframe='today 1-m')
        data = pytrends.interest_over_time()
        print(data)  # 한글 출력
        time.sleep(60)
    except Exception as e:
        print(f"Error : {keyword} - {e}")
        time.sleep(120)

 

그리고 반복문을 통해서 배열의 담긴 키워드 들을 다 조사를 할 예정입니다.

 

 

  • build_payload: 구글 트렌드 데이터 요청을 설정하는 메서드입니다.
    • [keyword]: 현재 반복문에서 처리 중인 키워드를 지정합니다.
    • timeframe='today 1-m': 최근 1개월 데이터를 요청합니다.
  • timeframe을 조정하면 원하는 기간의 데이터를 분석할 수 있습니다. 예를 들어:
    • 최근 1개월: 'today 1-m'
    • 최근 1일: 'now 1-d'

 

 

  • interest_over_time(): 요청한 키워드의 시간에 따른 관심도 데이터를 가져옵니다.
  • 반환된 데이터는 팬더스(DataFrame) 형식으로 제공됩니다.
  • 이 데이터를 엑셀 파일로 저장하거나 시각화 라이브러리로 그래프를 그릴 수 있습니다.

 

 

  • 요청 간격을 60초로 설정합니다.너무 많은 요청을 빠르게 보내면 구글에서 IP를 차단할 수 있습니다.
  • 적절한 간격을 두는 것이 중요합니다.

 


 

2

 

Test.py

 

[ 최종 코드 ]

# UTF-8 인코딩 출력
sys.stdout.reconfigure(encoding='utf-8')

# PyTrends 설정
pytrends = TrendReq(hl='ko', tz=360)

# 키워드 리스트
keywords = ['파이썬', '머신 러닝']

for keyword in keywords:
    try:
        pytrends.build_payload([keyword], timeframe='today 5-y')
        data = pytrends.interest_over_time()
        print(data)  # 한글 출력
        time.sleep(60)
    except Exception as e:
        print(f"에러 발생: {keyword} - {e}")
        time.sleep(120)

 


 

3

 

import sys
import io

# 출력 스트림의 기본 인코딩 설정
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')

# 테스트 출력
print("한글 테스트")

from pytrends.request import TrendReq
import pandas as pd
import matplotlib.pyplot as plt

# pytrends 객체 생성
pytrends = TrendReq(hl='ko', tz=360)

# 실시간 급상승 검색어 가져오기
trending_searches = pytrends.trending_searches(pn='south_korea')
keywords = trending_searches[0].tolist()[:5]  # 상위 5개의 급상승 검색어
print("실시간 급상승 검색어:", keywords)

 

 

테스트는 끝났으니 이제 실시간 급상승 하는 키워드를 수집할 수 있는 로직을 새로 짜겠습니다.

임의의 키워드 대신 구글 트랜드에서 실시간으로 하는 검색어들을 수집해 추출하는 방식으로 코드를 짰습니다.

 

 

현재 시각으로 나오는 구글 트랜드 분석은

['지금 거신 전화는', '빅뱅', 'K리그1', '스타레일', '세븐틴']

이렇게 나옵니다.

 

나중에는 이러한 방법으로 사람들의 관심사를 가지고 포스팅 할 수도 있다고 생각합니다.

그러면 블로그의 유입하는 사람들도 많아질 수 있다고 생각합니다

 

감사합니다.

 

 

728x90
반응형
728x90
[Python]



Python을 Visual Studio Code에서 개발 환경 세팅 하는 방법 알려드리겠습니다.

 

요즘 파이썬으로 코딩 하는 게 재미있어서 집에서 환경 세팅하고 연습 좀 할려고 합니다

코딩 테스트 하기에도 가장 접근성이 좋은 언어라 앞으로도 배워놓으면 참 좋을 것 같습니다.

 

잘 정리했으니

천천히 따라오시면 됩니다~

 


 

1

 

먼저 파이썬 홈페이지 접속해서 Python을 설치해야 합니다.

 

https://www.python.org/

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

 

 

홈페이지에 접근 하시면 자신의 OS 환경에 맞는 것을 선택해주시면 됩니다.

 

 

-

저는 Windows 환경이라 Window 환경으로 다운 받습니다.

 

 

installer 눌러서 다운 받으면 됩니다.

 

그리고 나서 install 해주시면 설치 창이 뜹니다.

 

 

 

/*** Add python.exe to PATH ***/ 이 부분을 추가해주셔야 환경 변수를 추가해주는 겁니다.

 

 

 

Option은 다 선택해주시면 됩니다.

 

 

그리고 파이썬 경로는 편한 곳으로 세팅하는 게 좋습니다.

 

 

그러면 무난하게 파이썬 설치는 다 끝났습니다.


 

2

 

그리고 나서 VS Code 설치를 하도록 하겠습니다.

 

https://code.visualstudio.com/\

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

vs code에 접근해서 다운로드 해줍니다.

 

 

동의하기~!

 

 

/*** PATH 추가 ***/ 여기도 이 부분을 추가해주셔야 환경 변수를 추가해주는 겁니다.

 

 


 

3

 

VS Code 마켓에서 이제 파이썬을 연동해주시면 됩니다.

 

왼쪽에 있는 확장을 눌러주시면 됩니다.

 

그리고 Python Extension Pack을 설치해주시면 끝납니다.

 

 

그리고 VS Code에서 test.py로 

 

"Hello World!" 테스트 해줍니다.

 

 

설치 끝~

 

감사합니다!

728x90
반응형
728x90

Python을 활용한 웹 크롤링의 모든 것

웹 크롤링은 인터넷 상의 데이터를 자동으로 수집하고 분석하는 작업으로, 데이터 분석, 연구, 비즈니스 인사이트 등에 활용될 수 있습니다.

 

특히 Python은 다양한 라이브러리와 커뮤니티의 지원 덕분에 웹 크롤링을 수행하기에 최적의 언어로 꼽힙니다.

Python을 사용해 웹 크롤링을 시작하는 방법과 핵심 기술을 다루어보겠습니다.

 

 


1. 웹 크롤링의 기본 개념

 

웹 크롤링이란?

웹 크롤링은 프로그램이 웹사이트를 방문해 특정 정보를 추출하는 과정을 의미합니다.

흔히 사용되는 사례로는 상품 가격 비교, 뉴스 데이터 수집, 소셜 미디어 분석 등이 있습니다.

웹 크롤링의 작동 원리

웹 크롤러는 다음과 같은 과정을 따릅니다:

  1. HTTP 요청 보내기: URL을 통해 서버에 요청을 보냅니다.
  2. HTML 응답 받기: 서버로부터 HTML 문서를 수신합니다.
  3. 데이터 파싱: HTML 문서에서 원하는 데이터를 추출합니다.
  4. 저장: 추출한 데이터를 CSV, 데이터베이스 등에 저장합니다.

2. Python의 주요 웹 크롤링 도구

 

1) requests

requests는 HTTP 요청을 보내기 위한 라이브러리입니다. 웹페이지에 접속하여 HTML 문서를 가져오는 데 사용됩니다.

import requests

url = 'https://example.com'
response = requests.get(url)

if response.status_code == 200:
    print(response.text)  # HTML 내용 출력

 

2) BeautifulSoup

BeautifulSoup는 HTML 파싱을 돕는 라이브러리로, 특정 데이터 추출에 유용합니다.

 

from bs4 import BeautifulSoup

html = "<html><body><h1>안녕하세요</h1></body></html>"
soup = BeautifulSoup(html, 'html.parser')

print(soup.h1.text)  # "안녕하세요" 출력
 

3) Selenium

동적인 웹사이트를 크롤링할 때 사용되는 브라우저 자동화 도구입니다. 자바스크립트를 통해 생성된 데이터를 처리할 수 있습니다.

 

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://example.com')

print(driver.page_source)  # 렌더링된 HTML
driver.quit()

 


3. 간단한 웹 크롤링 예제

예제: 네이버 뉴스 헤드라인 가져오기

import requests
from bs4 import BeautifulSoup

url = 'https://news.naver.com/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

headlines = soup.select('.hdline_article_tit a')  # 네이버 뉴스의 헤드라인 CSS 클래스

for idx, headline in enumerate(headlines, 1):
    print(f"{idx}. {headline.text.strip()}")

 

 

파이썬 코드를 이렇게 작성하면 네이버 헤드라인을 뽑아올 수 있다.

728x90
반응형
728x90

1. 변수와 데이터 타입

Python에서 변수는 데이터를 저장하는 이름입니다. 변수는 값을 할당하고, 그 값을 나중에 다시 사용할 수 있습니다. Python은 변수를 선언할 때 타입을 명시할 필요가 없으며, 변수가 값을 저장하는 순간 타입이 자동으로 정해집니다.

 

변수 선언과 데이터 타입

x = 10          	# 정수형
y = 3.14        	# 실수형
name = "Jee"  		# 문자열형
is_active = True  	# 불리언형 (True 또는 False)

 

변수 출력하기

x = 10
print(x) # 10

 

 

2. 연산자

 

산술 연산자

산술 연산자는 숫자 값을 다룰 때 사용됩니다.

a = 10
b = 5
print(a + b)  	# 덧셈: 15
print(a - b)  	# 뺄셈: 5
print(a * b)  	# 곱셈: 50
print(a / b)  	# 나눗셈: 2.0
print(a // b) 	# 몫: 2
print(a % b)  	# 나머지: 0
print(a ** b)  	# 거듭제곱: 100000

 

 

비교 연산자

비교 연산자는 두 값을 비교하고, 그 결과로 True 또는 False를 반환합니다.

 

a = 10
b = 5
print(a == b)  # 같다: False
print(a != b)  # 같지 않다: True
print(a > b)   # a가 b보다 크다: True
print(a < b)   # a가 b보다 작다: False
print(a >= b)  # a가 b보다 크거나 같다: True
print(a <= b)  # a가 b보다 작거나 같다: False

 

논리 연산자

논리 연산자는 두 개 이상의 조건을 결합할 때 사용됩니다.

 

x = True
y = False
print(x and y)  # 논리곱 (AND): False
print(x or y)   # 논리합 (OR): True
print(not x)    # 논리 부정 (NOT): False

 

 

3. 조건문

조건문은 특정 조건에 따라 프로그램 흐름을 제어할 수 있게 해줍니다.

Python에서 조건문은 if, elif, else를 사용하여 작성합니다.

age = 16
if age >= 18:
    print("성인입니다.")
elif age >= 13:
    print("청소년입니다.")
else:
    print("어린이입니다.")

 

 

4. 반복문

반복문은 어떤 코드를 반복적으로 실행하는 데 사용됩니다.

Python에서는 for문과 while문을 사용하여 반복문을 작성할 수 있습니다.

 

# for문

for i in range(5):  # 0부터 4까지 반복
    print(i)
    
# while문

count = 0
while count < 5:
    print(count)
    count += 1  # count 값 증가
728x90
반응형

+ Recent posts

728x90
반응형
728x90
반응형