<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>프로그램 &#8211; 투데이즈.kr</title>
	<atom:link href="https://2days.kr/tag/%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%a8/feed/" rel="self" type="application/rss+xml" />
	<link>https://2days.kr</link>
	<description>투데이즈</description>
	<lastBuildDate>Sun, 16 Nov 2025 13:14:51 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8</generator>

<image>
	<url>https://2days.kr/wp-content/uploads/2025/10/cropped-simbol-1-32x32.png</url>
	<title>프로그램 &#8211; 투데이즈.kr</title>
	<link>https://2days.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>파이썬 다나와 크롤링 제품 정보 모으기</title>
		<link>https://2days.kr/01/10/14/59333/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Tue, 01 Oct 2024 05:09:29 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[다나와]]></category>
		<category><![CDATA[수집]]></category>
		<category><![CDATA[제품정보]]></category>
		<category><![CDATA[크롤링]]></category>
		<category><![CDATA[파이싼]]></category>
		<category><![CDATA[프로그램]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=59333</guid>

					<description><![CDATA[파이썬 다나와 크롤링 하여 제품 정보를 모아보도록 하겠습니다. 파이썬 스크립트를 쓰고 스트림릿으로 올려서 쉽게 웹페이지에서 조회를 하면 쉽게 페이지 정보를 모을 수 있습니다. [주의] 해당 스크립트는 공부를 위한 학습 목적이므로 불법으로 사이트 정보를 모으거나 이용하는 행위는 불법 행동이 될 수 있습니다. 파이썬 다나와 크롤링 제품 정보 모으기 이 스크립트는 Streamlit을 이용해 웹페이지를 통해 제품 정보를 검색하고, 결과를 크롤링하여 보여주는 애플리케이션을 구현한 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p data-ke-size="size16">파이썬 다나와 크롤링 하여 제품 정보를 모아보도록 하겠습니다. 파이썬 스크립트를 쓰고 스트림릿으로 올려서 쉽게 웹페이지에서 조회를 하면 쉽게 페이지 정보를 모을 수 있습니다.</p>
<p data-ke-size="size16">[주의] 해당 스크립트는 공부를 위한 학습 목적이므로 불법으로 사이트 정보를 모으거나 이용하는 행위는 불법 행동이 될 수 있습니다.</p>
<h3 data-ke-size="size23">파이썬 다나와 크롤링 제품 정보 모으기</h3>
<figure data-ke-type="image" data-ke-style="alignCenter" data-ke-mobilestyle="widthOrigin"><img post-id="59333" fifu-featured="1" decoding="async" src="https://blog.kakaocdn.net/dn/wvxNz/btsJRdWjZkk/OXgzKkxNHFBx276xlOhEA0/img.png" alt="파이썬 다나와 크롤링 제품 정보 모으기" title="파이썬 다나와 크롤링 제품 정보 모으기" data-origin-width="2560" data-origin-height="2560" data-filename="파이썬 다나와 크롤링 제품 정보 모으기.png" data-is-animation="false" title="파이썬 다나와 크롤링 제품 정보 모으기 2"></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

<p data-ke-size="size16">이 스크립트는 <b>Streamlit</b>을 이용해 웹페이지를 통해 제품 정보를 검색하고, 결과를 크롤링하여 보여주는 애플리케이션을 구현한 것입니다. 스크립트의 주요 동작은 아래와 같습니다:</p>
<p data-ke-size="size16"><b>1. 필요한 모듈 임포트</b></p>
<pre id="code_1727758646354" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">import streamlit as st
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import time</pre>
<p data-ke-size="size16">• <b>Streamlit</b>: 웹 애플리케이션을 쉽게 만들 수 있는 프레임워크.</p>
<p data-ke-size="size16">• <b>requests</b>: 웹페이지에 HTTP 요청을 보내는 라이브러리.</p>
<p data-ke-size="size16">• <b>BeautifulSoup</b>: HTML 및 XML 데이터를 파싱하는 라이브러리.</p>
<p data-ke-size="size16">• <b>pandas</b>: 데이터 처리 및 분석을 위한 라이브러리.</p>
<p data-ke-size="size16">• <b>re, time</b>: 정규 표현식과 시간 관련 모듈.</p>
<p data-ke-size="size16"><b>2. get_page_content() 함수</b></p>
<pre id="code_1727758679522" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">def get_page_content(search_query, page_num):
    url = f<span class="hljs-string">"https://search.danawa.com/dsearch.php?query={search_query}&amp;page={page_num}"</span>
    headers = {
        <span class="hljs-string">'User-Agent'</span>: <span class="hljs-string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'</span>
    }
    response = requests.get(url, headers=headers)
    <span class="hljs-built_in">return</span> BeautifulSoup(response.content, <span class="hljs-string">'html.parser'</span>)</pre>
<p data-ke-size="size16">• <b>URL 생성</b>: 검색어와 페이지 번호를 기반으로 danawa.com의 검색 결과 페이지 URL을 생성합니다.</p>
<p data-ke-size="size16">• <b>HTTP 요청</b>: requests를 이용해 해당 페이지의 HTML을 요청합니다.</p>
<p data-ke-size="size16">• <b>BeautifulSoup 파싱</b>: 받은 HTML을 BeautifulSoup 객체로 변환하여 HTML 구조를 쉽게 탐색할 수 있도록 합니다.</p>
<p data-ke-size="size16"><b>3. crawl_product_info() 함수</b></p>
<pre id="code_1727758699552" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">def crawl_product_info(search_query):
    product_list = []
    <span class="hljs-comment"># 페이지 수 자동 계산</span>
    soup = get_page_content(search_query, 1)
    max_pages = int(soup.select_one(<span class="hljs-string">'div.paging_number_wrap'</span>).find_all(<span class="hljs-string">'a'</span>)[-1][<span class="hljs-string">'data-page'</span>])</pre>
<p data-ke-size="size16">• <b>페이지 수 자동 계산</b>: 첫 페이지를 가져와서 페이지네이션 정보를 확인하고, 최대 페이지 수를 계산합니다.</p>
<pre id="code_1727758730220" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">    <span class="hljs-comment"># 각 페이지에서 제품 정보 크롤링</span>
    <span class="hljs-keyword">for</span> page_num <span class="hljs-keyword">in</span> range(1, max_pages + 1):
        st.session_state.progress_bar.progress(page_num / max_pages)  <span class="hljs-comment"># 진행률 표시</span>
        soup = get_page_content(search_query, page_num)
        products = soup.select(<span class="hljs-string">'li.prod_item'</span>)</pre>
<p data-ke-size="size16">• <b>진행률 표시</b>: 각 페이지를 크롤링할 때마다 진행률 바를 업데이트합니다.</p>
<p data-ke-size="size16">• <b>제품 정보 탐색</b>: 각 페이지에서 li.prod_item 요소를 찾아서 제품 목록을 가져옵니다.</p>
<pre id="code_1727758751617" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">        <span class="hljs-keyword">for</span> product <span class="hljs-keyword">in</span> products:
            try:
                <span class="hljs-comment"># 업체명과 제품명 가져오기</span>
                name_tag = product.select_one(<span class="hljs-string">'p.prod_name a'</span>)
                full_name = name_tag.text.strip() <span class="hljs-keyword">if</span> name_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>
                업체명 = full_name.split()[0]  <span class="hljs-comment"># 공백 전까지 업체명 추출</span>
                제품명 = <span class="hljs-string">' '</span>.join(full_name.split()[1:])  <span class="hljs-comment"># 첫 공백 이후 제품명 추출</span></pre>
<p data-ke-size="size16">• <b>업체명과 제품명</b>: p.prod_name에서 제품명을 추출하고, 첫 단어는 업체명으로, 나머지는 제품명으로 저장합니다.</p>
<pre id="code_1727758779301" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">                <span class="hljs-comment"># 가격, 이미지, 링크, 추가 정보 등 가져오기</span>
                price_tag = product.select_one(<span class="hljs-string">'p.price_sect a strong'</span>)
                가격 = price_tag.text.strip() <span class="hljs-keyword">if</span> price_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                img_tag = product.select_one(<span class="hljs-string">'div.thumb_image a img'</span>)
                이미지_URL = img_tag[<span class="hljs-string">'src'</span>] <span class="hljs-keyword">if</span> img_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                link_tag = product.select_one(<span class="hljs-string">'div.thumb_image a'</span>)
                링크 = link_tag[<span class="hljs-string">'href'</span>] <span class="hljs-keyword">if</span> link_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                추가정보_tag = product.select_one(<span class="hljs-string">'div.spec_list'</span>)
                추가정보 = 추가정보_tag.text.strip() <span class="hljs-keyword">if</span> 추가정보_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                등록월_tag = product.select_one(<span class="hljs-string">'div.prod_sub_meta dl.meta_item.mt_date dd'</span>)
                등록월 = 등록월_tag.text.strip() <span class="hljs-keyword">if</span> 등록월_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                평점_tag = product.select_one(<span class="hljs-string">'div.star-single span.text__score'</span>)
                평점 = 평점_tag.text.strip() <span class="hljs-keyword">if</span> 평점_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                리뷰수_tag = product.select_one(<span class="hljs-string">'div.text__review span.text__number'</span>)
                리뷰수 = 리뷰수_tag.text.strip() <span class="hljs-keyword">if</span> 리뷰수_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span></pre>
<p data-ke-size="size16">• <b>가격, 이미지, 링크</b>: 각 요소에서 제품의 가격, 이미지 URL, 구매 링크를 가져옵니다.</p>
<p data-ke-size="size16">• <b>추가 정보, 등록월, 평점, 리뷰수</b>: 제품의 부가 정보, 등록 월, 사용자 평점, 리뷰 수를 추출합니다.</p>
<p data-ke-size="size16">아래 스크립트는 전체 스크립트입니다.</p>
<pre id="code_1727758537549" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock">import streamlit as st
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import time

<span class="hljs-comment"># 페이지 컨텐츠를 받아오는 함수</span>
def get_page_content(search_query, page_num):
    url = f<span class="hljs-string">"https://search.danawa.com/dsearch.php?query={search_query}&amp;page={page_num}"</span>
    headers = {
        <span class="hljs-string">'User-Agent'</span>: <span class="hljs-string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'</span>
    }
    response = requests.get(url, headers=headers)
    <span class="hljs-built_in">return</span> BeautifulSoup(response.content, <span class="hljs-string">'html.parser'</span>)

<span class="hljs-comment"># 제품 정보 크롤링 함수</span>
def crawl_product_info(search_query):
    product_list = []
    <span class="hljs-comment"># 페이지 수 자동 계산</span>
    soup = get_page_content(search_query, 1)
    max_pages = int(soup.select_one(<span class="hljs-string">'div.paging_number_wrap'</span>).find_all(<span class="hljs-string">'a'</span>)[-1][<span class="hljs-string">'data-page'</span>])

    <span class="hljs-comment"># 각 페이지에서 제품 정보 크롤링</span>
    <span class="hljs-keyword">for</span> page_num <span class="hljs-keyword">in</span> range(1, max_pages + 1):
        st.session_state.progress_bar.progress(page_num / max_pages)  <span class="hljs-comment"># 진행률 표시</span>
        soup = get_page_content(search_query, page_num)
        products = soup.select(<span class="hljs-string">'li.prod_item'</span>)

        <span class="hljs-keyword">for</span> product <span class="hljs-keyword">in</span> products:
            try:
                <span class="hljs-comment"># 업체명과 제품명 가져오기</span>
                name_tag = product.select_one(<span class="hljs-string">'p.prod_name a'</span>)
                full_name = name_tag.text.strip() <span class="hljs-keyword">if</span> name_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>
                업체명 = full_name.split()[0]  <span class="hljs-comment"># 공백 전까지 업체명 추출</span>
                제품명 = <span class="hljs-string">' '</span>.join(full_name.split()[1:])  <span class="hljs-comment"># 첫 공백 이후 제품명 추출</span>

                <span class="hljs-comment"># 가격 가져오기</span>
                price_tag = product.select_one(<span class="hljs-string">'p.price_sect a strong'</span>)
                가격 = price_tag.text.strip() <span class="hljs-keyword">if</span> price_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 이미지 URL 가져오기</span>
                img_tag = product.select_one(<span class="hljs-string">'div.thumb_image a img'</span>)
                이미지_URL = img_tag[<span class="hljs-string">'src'</span>] <span class="hljs-keyword">if</span> img_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 링크 가져오기</span>
                link_tag = product.select_one(<span class="hljs-string">'div.thumb_image a'</span>)
                링크 = link_tag[<span class="hljs-string">'href'</span>] <span class="hljs-keyword">if</span> link_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 추가 정보 가져오기</span>
                추가정보_tag = product.select_one(<span class="hljs-string">'div.spec_list'</span>)
                추가정보 = 추가정보_tag.text.strip() <span class="hljs-keyword">if</span> 추가정보_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 등록월 가져오기</span>
                등록월_tag = product.select_one(<span class="hljs-string">'div.prod_sub_meta dl.meta_item.mt_date dd'</span>)
                등록월 = 등록월_tag.text.strip() <span class="hljs-keyword">if</span> 등록월_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 평점 가져오기</span>
                평점_tag = product.select_one(<span class="hljs-string">'div.star-single span.text__score'</span>)
                평점 = 평점_tag.text.strip() <span class="hljs-keyword">if</span> 평점_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 리뷰 수 가져오기</span>
                리뷰수_tag = product.select_one(<span class="hljs-string">'div.text__review span.text__number'</span>)
                리뷰수 = 리뷰수_tag.text.strip() <span class="hljs-keyword">if</span> 리뷰수_tag <span class="hljs-keyword">else</span> <span class="hljs-string">'정보 없음'</span>

                <span class="hljs-comment"># 데이터 저장</span>
                product_list.append({
                    <span class="hljs-string">'업체명'</span>: 업체명,
                    <span class="hljs-string">'제품명'</span>: 제품명,
                    <span class="hljs-string">'추가정보'</span>: 추가정보,
                    <span class="hljs-string">'가격'</span>: 가격,
                    <span class="hljs-string">'이미지'</span>: 이미지_URL,
                    <span class="hljs-string">'링크'</span>: 링크,
                    <span class="hljs-string">'평점'</span>: 평점,
                    <span class="hljs-string">'리뷰수'</span>: 리뷰수,
                    <span class="hljs-string">'등록월'</span>: 등록월
                })

            except Exception as e:
                <span class="hljs-built_in">print</span>(f<span class="hljs-string">"Error processing product: {e}"</span>)

    <span class="hljs-built_in">return</span> product_list

<span class="hljs-comment"># Streamlit 애플리케이션 설정</span>
st.set_page_config(layout=<span class="hljs-string">"wide"</span>)

<span class="hljs-comment"># 왼쪽 옵션 패널 만들기</span>
with st.sidebar:
    st.title(<span class="hljs-string">"검색 옵션"</span>)
    search_query = st.text_input(<span class="hljs-string">"검색어 입력"</span>, <span class="hljs-string">"노트북"</span>)
    search_button = st.button(<span class="hljs-string">"검색"</span>)
    <span class="hljs-comment"># 진행률 바 초기화</span>
    <span class="hljs-keyword">if</span> <span class="hljs-string">'progress_bar'</span> not <span class="hljs-keyword">in</span> st.session_state:
        st.session_state.progress_bar = st.progress(0)

<span class="hljs-comment"># 검색 버튼이 눌렸을 때</span>
<span class="hljs-keyword">if</span> search_button:
    st.write(f<span class="hljs-string">"'{search_query}' 검색 결과:"</span>)
    
    <span class="hljs-comment"># 크롤링 시작</span>
    product_list = crawl_product_info(search_query)
    
    <span class="hljs-comment"># 결과를 데이터프레임으로 변환 후 출력</span>
    df = pd.DataFrame(product_list)
    st.dataframe(df)

    <span class="hljs-comment"># CSV 파일 다운로드 버튼</span>
    csv = df.to_csv(index=False, encoding=<span class="hljs-string">'utf-8-sig'</span>)
    st.download_button(
        label=<span class="hljs-string">"CSV 다운로드"</span>,
        data=csv,
        file_name=f<span class="hljs-string">'{search_query}_검색결과.csv'</span>,
        mime=<span class="hljs-string">'text/csv'</span>
    )</pre>
<h3 style="color: #000000; text-align: start;" data-ke-size="size23">파이썬 다나와 크롤링 제품 정보 모으기 &#8211; 스트림릿</h3>
<p data-ke-size="size16"><span style="color: #333333; text-align: start;">이 스크립트는 </span><b>Streamlit</b>을 이용해 웹페이지를 통해 제품 정보를 검색하고, 결과를 크롤링하여 보여주는 애플리케이션을 위해 코드를 업로드 합니다. 아래 코드도 공유 드릴게요</p>
<figure contenteditable="false" data-ke-type="file" data-ke-align="alignCenter">
<div class="image"></div>
<div class="desc">
<p class="filename"><span class="name">미확인 478311</span><span class="type">.crdownload</span></p>
<p class="size">0.00MB</p>
</div>
</figure>
<p>&nbsp;</p>
<!-- CONTENT END 2 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blog.kakaocdn.net/dn/wvxNz/btsJRdWjZkk/OXgzKkxNHFBx276xlOhEA0/img.png" medium="image"></media:content>
            	</item>
		<item>
		<title>파일 검색 및 저장 프로그램 파이썬</title>
		<link>https://2days.kr/24/10/22/7882/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Tue, 24 Oct 2023 13:48:11 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[파이썬]]></category>
		<category><![CDATA[파일 검색]]></category>
		<category><![CDATA[파일 검색 저장]]></category>
		<category><![CDATA[파일 저장]]></category>
		<category><![CDATA[프로그램]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7882</guid>

					<description><![CDATA[아래 코드는 PyQt5를 사용하여 GUI 기반의 간단한 파일 검색 및 저장 프로그램입니다. 이 프로그램은 다음과 같은 기능을 가지고 있습니다.]]></description>
										<content:encoded><![CDATA[<div>
<p><span style="font-family: Verdana, BlinkMacSystemFont, -apple-system, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;">아래 코드는 PyQt5를 사용하여 GUI 기반의 간단한 파일 검색 및 저장 프로그램입니다. 이 프로그램은 다음과 같은 기능을 가지고 있습니다.</span></p>
<figure style="width: 320px" class="wp-caption aligncenter"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgilUfVbiQ7MbOo1hEZdwZbhJzWOWxOuKeJB4qSA9IJbGJrxIKFxrMrLcQB2ZfxHroYAz4PimG0iCuJ2W_515W5hfucAmB5l-0N3TEFoKFNzQ5NZSBNyP0G22phgPCQIZBa7kHJDmRBz6JXb4Nd3XazWg2PuFoalbdSFeHN9txRsmW3UP1h2Gc2zapvEqJM/s2560/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF%20%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-012.png" target="_blank" rel="noopener"><img post-id="7882" fifu-featured="1" fetchpriority="high" decoding="async" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgilUfVbiQ7MbOo1hEZdwZbhJzWOWxOuKeJB4qSA9IJbGJrxIKFxrMrLcQB2ZfxHroYAz4PimG0iCuJ2W_515W5hfucAmB5l-0N3TEFoKFNzQ5NZSBNyP0G22phgPCQIZBa7kHJDmRBz6JXb4Nd3XazWg2PuFoalbdSFeHN9txRsmW3UP1h2Gc2zapvEqJM/s320/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF%20%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-012.png" alt="파일 검색 및 저장 프로그램 파이썬" title="파일 검색 및 저장 프로그램 파이썬" width="320" height="320" border="0" data-original-height="2560" data-original-width="2560" title="파일 검색 및 저장 프로그램 파이썬 3"></a><figcaption class="wp-caption-text">파일 검색 및 저장 프로그램 파이썬</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

</div>
<div>
<div>
<ol>
<li>검색 폴더 선택 기능</li>
<li>파일 크기를 입력하여 해당 크기보다 큰 파일 검색 기능</li>
<li>검색된 파일 목록을 GUI 텍스트 창에 표시</li>
<li>검색 결과를 파일로 저장하는 기능</li>
<li>이 코드를 실행하면 GUI 창이 나타나며, 원하는 폴더를 선택하고 파일 크기를 입력한 후 &#8220;Search&#8221; 버튼을 클릭하여 파일을 검색할 수 있습니다. 검색 결과는 GUI 텍스트 창에 표시되며, &#8220;Save&#8221; 버튼을 클릭하여 결과를 파일로 저장할 수 있습니다.</li>
</ol>
</div>
<div></div>
<div>코드 세부내역을 살펴 보겠습니다.</div>
</div>
<div></div>
<h3><strong>1. 모듈 임포트</strong></h3>
<div>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">import sys
import os
import time
from PyQt5.QtWidgets import *
from PyQt5 import uic, QtCore, QtGui, QtWidgets
</pre>
<ul>
<li><code>sys</code>: 시스템과 관련된 파이썬 모듈로, 명령행 인수 및 스크립트 종료와 같은 시스템 기능을 제공합니다.</li>
<li><code>os</code>: 운영체제와 상호 작용하는 파이썬 모듈로, 파일 및 디렉터리 관리 등의 작업을 수행합니다.</li>
<li><code>time</code>: 시간과 관련된 파이썬 모듈로, 시간 지연 및 측정 기능을 제공합니다.</li>
<li><code>PyQt5</code>: Qt 프레임워크를 사용한 GUI 애플리케이션을 개발하기 위한 모듈입니다.</li>
<li><code>uic</code>: Qt Designer를 통해 디자인한 UI 파일을 로드하는 모듈입니다.</li>
</ul>
<h3><strong>2. UI 파일로드</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">form_class = uic.loadUiType("winsearch5.ui")[0]
</pre>
<p>&nbsp;</p>
<p><code>uic.loadUiType("winsearch5.ui")</code>를 통해 Qt Designer에서 디자인한 UI 파일 &#8220;winsearch5.ui&#8221;를 로드하고, 해당 UI에 대한 클래스를 가져옵니다.</p>
<h3><strong>3. 클래스 정의</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">class MyWindow(QMainWindow, form_class):
</pre>
<p><code>QMainWindow</code> 및 <code>form_class</code> 클래스를 상속하는 <code>MyWindow</code> 클래스를 정의합니다.</p>
<h3><strong>4. 클래스 초기화 및 UI 설정</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def __init__(self):
    super().__init__()
    self.setupUi(self)
    # UI 설정 및 이벤트 핸들러 연결
</pre>
<p><code>MyWindow</code> 클래스의 초기화 메서드로, UI를 초기화하고 이벤트 핸들러를 설정합니다.</p>
<h3><strong>5. 파일 검색 메서드</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def searchFile(self):
    # 파일 검색 및 결과 표시
</pre>
<p>사용자가 입력한 폴더에서 파일을 검색하고, 결과를 GUI 텍스트 창에 표시합니다.</p>
<h3><strong>6. 폴더 선택 메서드</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def selectFolder(self):
    # 검색할 폴더 선택
</pre>
<p>사용자에게 폴더를 선택하도록 대화상자를 열어주는 메서드입니다.</p>
<h3><strong>7. 폴더 선택 메서드</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def saveFile(self):
    # 검색 결과를 파일로 저장
</pre>
<p>검색된 결과를 파일로 저장하는 메서드입니다.</p>
<h3><strong>8. 이벤트 처리 메서드</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">def clickMethod(self):
    # 경고 메시지 표시
</pre>
<h3><strong>9. 어플리케이션 실행</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
</pre>
<ul>
<li>PyQt5 애플리케이션을 초기화하고 <code>MyWindow</code> 클래스의 인스턴스를 생성하며, 애플리케이션 이벤트 루프를 실행합니다.</li>
</ul>
<p>이 프로그램은 사용자로부터 폴더 및 파일 크기를 입력받아 해당 폴더에서 지정한 크기보다 큰 파일을 검색하고, 검색 결과를 GUI를 통해 표시하거나 파일로 저장하는 기능을 제공합니다. PyQt5를 사용하여 GUI를 만들고, Python의 <code>os</code> 모듈을 이용하여 파일 검색 및 크기 측정을 수행합니다.</p>
<h3><strong>10. 완성코드</strong></h3>
<pre class="EnlighterJSRAW" data-enlighter-language="python"># -*- coding: utf-8 -*-
import sys
import os
import time
from PyQt5.QtWidgets import *
from PyQt5 import uic, QtCore, QtGui, QtWidgets

form_class = uic.loadUiType("winsearch5.ui")[0]

class MyWindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.pushButton.clicked.connect(self.searchFile)
        self.toolButton.clicked.connect(self.selectFolder)
        self.toolButton_2.clicked.connect(self.selectSaveFile)
        self.pushButton_2.clicked.connect(self.saveFile)

    def searchFile(self):
        global folder_size_total

        folder_size_total = 0

        if self.lineEdit_2.text():
            folder = self.lineEdit_2.text()
        else:
            folder = 'F:/Download'

        if self.lineEdit.text():
            file_size_input = self.lineEdit.text()
            if int(file_size_input) &lt; 1000:
                print("파일 검색 사이즈가 너무 작습니다.(1000 bytes 이상)")
                self.textEdit.setText("파일 검색 사이즈가 너무 작습니다.(1000 bytes 이상)")
                self.clickMethod()
            else:
                self.textEdit.clear()
                try:
                    for (path, dirs, files) in os.walk(folder):
                        for file in files:
                            try:
                                filename = os.path.join(path, file)
                                file_size = os.path.getsize(filename)
                                if file_size &gt; int(file_size_input):
                                    print("파일명 : ", filename, "\t", "파일크기 : ", file_size, "\n")
                                    self.textEdit.append(str(filename) + "\t" + str(file_size) + " bytes")
                                folder_size_total += os.path.getsize(filename)
                            except FileNotFoundError:
                                pass
                        time.sleep(0.1)
                    time.sleep(0.1)
                    self.textEdit.append("\n폴더전체크기 : " + str(folder_size_total) + " bytes")

                    print(folder, "폴더전체크기 : ", folder_size_total, " Bytes")
                except KeyboardInterrupt:
                    sys.exit()

        else:
            self.textEdit.setText("파일 크기를 입력해 주세요.(1000 bytes 이상)")

    def selectFolder(self):
        directory = str(QtWidgets.QFileDialog.getExistingDirectory())
        self.lineEdit_2.setText('{}'.format(directory))

    def selectSaveFile(self):
        savefilename = QFileDialog.getSaveFileName(self, "Save File")
        print(type(savefilename))
        self.lineEdit_3.setText('{}'.format(savefilename[0]))

    def saveFile(self):
        savefilename = self.lineEdit_3.text()
        readfile = self.textEdit.toPlainText()
        if savefilename and readfile:
            print(type(savefilename))
            try:
                with open(savefilename, 'w+', encoding='utf8') as out:
                    out.write(readfile + "\n")
                out.close()
                self.clickMethod2()
                self.lineEdit_3.setText("")
            except:
                print("파일이 저장되지 않고, 에러가 발생하였습니다.")
        else:
            QMessageBox.about(self, "경고!!", "검색 결과가 없거나, 저정할 파일을 지정하지 않았습니다.")

    def clickMethod(self):
        QMessageBox.about(self, "주의!!", "파일 검색 사이즈가 너무 작습니다. (1000 bytes 이상)")

    def clickMethod2(self):
        QMessageBox.about(self, "파일저장!!", "파일이 저장되었습니다.")

app=QApplication(sys.argv)
window = MyWindow()
window.show()
print("Before event loop")
app.exec_()
print("After event loop")</pre>
<ol>
<li data-ke-size="size16">form_class = uic.loadUiType(&#8220;winsearch5.ui&#8221;)[0] : 유저가 만든 UI를 로드하여 form_class변수에 할당</li>
<li data-ke-size="size16">app=QApplication(sys.argv) : app객체 생성</li>
<li data-ke-size="size16">lass MyWindow(QMainWindow, form_class): QMainWindow 모듈은 PyQt5.QtWidgets 패키지에서 가져옴</li>
<li data-ke-size="size16">window = MyWindow() : 생성자의 self는 window를 전달받음, 여기서 self는 MyWindow 클래스 그 자신을 의미</li>
<li data-ke-size="size16">widow.show() : 창을 한번만 띄움</li>
<li data-ke-size="size16">app.exec_() : app객체를 실행, exec_()함수의 내장 루프로 계속 창이 뜨게 만듦</li>
<li data-ke-size="size16">self.setupUi(self) : form_class를 UI로 사용하겠다라는 의미</li>
<li data-ke-size="size16">self.pushButton.clicked.connect(self.searchFile) : pushButton클릭시 searchFile함수 호출(먼저 Qt Desiner로 PushButton을 UI작업 후 코딩해야 에러가 없음)</li>
<li data-ke-size="size16">file_size_input = self.lineEdit.text() : Qt Desiner의 lineEdit에서 입력받은 값을 file_size_input 변수에 저장</li>
<li data-ke-size="size16">self.textEdit.setText(&#8220;파일 검색 사이즈가 너무 작습니다.(1000 bytes 이상)&#8221;) : Qt Desiner의 textEdit에 경고문구 안내</li>
<li data-ke-size="size16">QMessageBox.about(self, &#8220;주의!!&#8221;, &#8220;파일 검색 사이즈가 너무 작습니다. (1000 bytes 이상)&#8221;) : 경고창 형태로 메시지 박스를 띄움</li>
<li data-ke-size="size16">for (path, dirs, files) in os.walk(folder): 검색할 폴더에서 경로명, 하위디렉토리명, 파일명을 리스트로 각 각 path, dirs, files에 저장</li>
<li data-ke-size="size16">filename = os.path.join(path, file) : 경로 + 파일명으로 filename변수에 저장</li>
<li data-ke-size="size16">file_size = os.path.getsize(filename) : 위(13번) 파일의 크기를 file_size변수에 저장</li>
<li data-ke-size="size16">self.textEdit.append(str(filename) + &#8220;\t&#8221; + str(file_size) + &#8221; bytes&#8221;) : Qt Desiner의 textEdit에 append로 filename과 file_size를 추가해줌</li>
<li data-ke-size="size16">folder_size_total += os.path.getsize(filename) : 검색폴더의 전체 크기를 구하기 위하여 if문 밖에 getsize()함수를 이용하여 파일들의 크기를 누적으로 더해줌</li>
<li data-ke-size="size16">time.sleep(0.1) : 프로그램이 먹통되지 않도록 일정 시간 쉬게 해줌</li>
</ol>
</div>
<!-- CONTENT END 3 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgilUfVbiQ7MbOo1hEZdwZbhJzWOWxOuKeJB4qSA9IJbGJrxIKFxrMrLcQB2ZfxHroYAz4PimG0iCuJ2W_515W5hfucAmB5l-0N3TEFoKFNzQ5NZSBNyP0G22phgPCQIZBa7kHJDmRBz6JXb4Nd3XazWg2PuFoalbdSFeHN9txRsmW3UP1h2Gc2zapvEqJM/s320/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF%20%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-012.png" medium="image"></media:content>
            	</item>
		<item>
		<title>옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램</title>
		<link>https://2days.kr/19/10/12/7795/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Thu, 19 Oct 2023 03:38:35 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[옥션]]></category>
		<category><![CDATA[최저가]]></category>
		<category><![CDATA[최저가 항공권]]></category>
		<category><![CDATA[파이썬]]></category>
		<category><![CDATA[프로그램]]></category>
		<category><![CDATA[항공권]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7795</guid>

					<description><![CDATA[최근에 코로나가 풀리고 사람들이 많이들 여행을 가서 그런지 내가 원하는 시간대의 제주도행 티켓이 없고, 있더라도 터무니 없이 비쌉니다. 대략 2개월전에 미리 예약하면 그나마 좀 나은 편이지만, 기간이 촉박한 상태에서 티켓을 예매 하다 보면 터무니 없이 비싸죠]]></description>
										<content:encoded><![CDATA[<p>오늘은 옥션 최저가 항공권 텔레그램 메세지를 받을 수 있는 파이썬 프로그램 관련 글입니다. 최근에 코로나가 풀리고 사람들이 많이들 여행을 가서 그런지 내가 원하는 시간대의 제주도행 티켓이 없고, 있더라도 터무니 없이 비쌉니다. 대략 2개월전에 미리 예약하면 그나마 좀 나은 편이지만, 기간이 촉박한 상태에서 티켓을 예매 하다 보면 터무니 없이 비싸죠</p>
<p data-ke-size="size16">결국 합리적인 가격으로 비행기표를 예매할 수 있도록 자동 티켓예매 프로그램을 제작하기로 합니다</p>
<div class="separator"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlQVyCahjVQc8KYtxZKaJGGEdigmfP9boR0R0b_fB6gDSEx-p3sYeIYc0bwjvbFe7p2neVRFZ22bNT9ggOv-KST-Quff5vXvlrHtnVEHnzOkMpmQhzxvmNCVP0QSBX6vZOq3p3gBrn8lhleMsVs9Y7G7Ol55MWg_ahhF3Yw6ZvOIzuA2pFtrnLQdattaRe/s2560/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF-%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-011.png" target="_blank" rel="noopener"><img post-id="7795" fifu-featured="1" decoding="async" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlQVyCahjVQc8KYtxZKaJGGEdigmfP9boR0R0b_fB6gDSEx-p3sYeIYc0bwjvbFe7p2neVRFZ22bNT9ggOv-KST-Quff5vXvlrHtnVEHnzOkMpmQhzxvmNCVP0QSBX6vZOq3p3gBrn8lhleMsVs9Y7G7Ol55MWg_ahhF3Yw6ZvOIzuA2pFtrnLQdattaRe/w400-h400/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF-%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-011.png" width="400" height="400" border="0" data-original-height="2560" data-original-width="2560" alt="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 4"><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
</a></div>
<p>&nbsp;</p>
<h4 data-ke-size="size20">최저가 항공권 파이썬 프로그램 소개</h4>
<div>
<p data-ke-size="size16">이번 프로그램은 옥션 최저가 항공티켓의 정보를 실시간으로 받아와 너무 비싸지 않은 가격으로 비행기표를 예매할 수 있는 프로그램을 만들어 보겠습니다.</p>
<p data-ke-size="size16">향후 진행 순서</p>
<p data-ke-size="size16">이후 글부터 진행되는 세부적인 내용은 다음과 같습니다.</p>
<p data-ke-size="size16"> 1.원하는 날짜 선택하기</p>
<p data-ke-size="size16"> 우리는 대부분 직장인이기 때문에 매주 금요일 저녁에 업무를 마치고 제주도로 간다고 가정하겠습니다. 여기 서는 파이썬으로 2개월치 매주 금요일의 날짜를 가져오는 방법에 대하여 알아 보도록 하겠습니다.</p>
<p data-ke-size="size16"> 2. 선택한 날짜의 항공 티켓 정보 받아오기</p>
<p data-ke-size="size16"> &#8211; 위의 1에서 우리가 선택한 날짜의 티켓 정보를 파이썬의 셀레니움과 크롤링 기법을 응용하여 가져와서 엑셀파일로 저장하는 방법에 대하여 알아보겠습니다.</p>
<p data-ke-size="size16"> 3.티켓정보에서 내가 원하는 시간대로 필터하기</p>
<p data-ke-size="size16"> -금요일이라고 해도 새벽 6시 티켓 등은 우리가 원하는 티켓이 아닙니다. 따라서 우리가 원하는 시간대인 업무 종료 시간 17시~20시 사이의 티켓 정보만 필터 해서 가져오는 방법을 설명합니다.</p>
<p data-ke-size="size16"> 4.시간대로 필터한 티켓 중에서 최저가 티켓 뽑아오기</p>
<p data-ke-size="size16"> -금요일 17시~20시 사이의 티켓들 중에서 가장 가격이 낮은 티켓의 정보를 가져오는 방법을 알아보겠습니다.</p>
<p data-ke-size="size16"> 5.위의 내용을 종합하여 메신저로 최저가 정보와 전체 항공티켓 정보 받기</p>
<p data-ke-size="size16"> -위에서 했던 내용들을 조금만 응용하여 텔레그램 메신저에 실시간으로 최저가 정보를 뿌려주고, 추가적인 정보를 확인할 수 있도록 전체 정보는 엑셀파일로 첨부하여 메신저로 보내주는 방법에 대하여 살펴보겠습니다.</p>
<p data-ke-size="size16">  완성된 프로그램 실행 화면</p>
<p data-ke-size="size16"> &#8211; 최종 완성된 프로그램의 결과화면은 아래와 같습니다.</p>
<p data-ke-size="size16"> <u>(1)옥션 최저가 항공티켓의 정보를 실시간으로 받아와 너무 비싸지 않은 가격으로 비행기표를 예매할 수 있는 프로그램 </u></p>
<p data-ke-size="size16">프로그램을 처음 실행 시 아래와 같이 실행됩니다.</p>
<p data-ke-size="size16">
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1900" data-origin-height="588"><span data-url="https://blog.kakaocdn.net/dn/b1Bfx4/btrVsoc5bEU/5nqktwpYGSzYJpIWx7SMm0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/b1Bfx4/btrVsoc5bEU/5nqktwpYGSzYJpIWx7SMm0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1Bfx4%2FbtrVsoc5bEU%2F5nqktwpYGSzYJpIWx7SMm0%2Fimg.png" data-origin-width="1900" data-origin-height="588" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 5"></span></figure>
<p data-ke-size="size16"> 그리고 프로그램 내 크롬드라이버를 사용한 파이썬의 셀레니움을 이용하여 자동으로 웹브라우저를 실행 후 티켓정보를 가져오기 시작합니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 001.png" data-origin-width="1263" data-origin-height="972"><span data-url="https://blog.kakaocdn.net/dn/TLVsQ/btrVsoREg7t/oXubkHSbXMAVW3yBGLwFn0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/TLVsQ/btrVsoREg7t/oXubkHSbXMAVW3yBGLwFn0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTLVsQ%2FbtrVsoREg7t%2FoXubkHSbXMAVW3yBGLwFn0%2Fimg.png" data-filename="이미지 001.png" data-origin-width="1263" data-origin-height="972" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 6"></span></figure>
<p data-ke-size="size16"> 2. 아래는 2개월치 옥션 항공 티켓 정보를 가져오고 있는 모습입니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 002.png" data-origin-width="1051" data-origin-height="903"><span data-url="https://blog.kakaocdn.net/dn/kBLaA/btrVmYz82Jj/KYQJTKPMKF3OhqUaPziEHK/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/kBLaA/btrVmYz82Jj/KYQJTKPMKF3OhqUaPziEHK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkBLaA%2FbtrVmYz82Jj%2FKYQJTKPMKF3OhqUaPziEHK%2Fimg.png" data-filename="이미지 002.png" data-origin-width="1051" data-origin-height="903" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 7"></span></figure>
<p data-ke-size="size16">3. 동시에 가져온 티켓정보를 메신저에 최저가 정보를 뿌려주고, 전체 항공티켓 세부 정보는 파일로 보내줍니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 003.png" data-origin-width="594" data-origin-height="603"><span data-url="https://blog.kakaocdn.net/dn/QcbvO/btrVk41FnNz/TkwGGHzEzH1TKrq3U9KmC1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/QcbvO/btrVk41FnNz/TkwGGHzEzH1TKrq3U9KmC1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQcbvO%2FbtrVk41FnNz%2FTkwGGHzEzH1TKrq3U9KmC1%2Fimg.png" data-filename="이미지 003.png" data-origin-width="594" data-origin-height="603" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 8"></span></figure>
<p data-ke-size="size16">4.윈도우탐색기에 해당 파일이 잘 저장된 것을 볼 수 있습니다.</p>
<p data-ke-size="size16">(여기서는 1,2월 2개월치 데이터인 1/6부터 매주 금요일치 정보 8주치를 수집하고 있음)</p>
<p data-ke-size="size16">
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 004.png" data-origin-width="630" data-origin-height="380"><span data-url="https://blog.kakaocdn.net/dn/smf7J/btrVsnFdd22/mMRqTCBhZw5pi4PiL5c5k0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/smf7J/btrVsnFdd22/mMRqTCBhZw5pi4PiL5c5k0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsmf7J%2FbtrVsnFdd22%2FmMRqTCBhZw5pi4PiL5c5k0%2Fimg.png" data-filename="이미지 004.png" data-origin-width="630" data-origin-height="380" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 9"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">5. 엑셀파일을 열어보니 항공사별 티켓정보가 예상한 대로 잘 저장되어 있습니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1005" data-origin-height="748"><span data-url="https://blog.kakaocdn.net/dn/bqxP53/btrVsJBtc0n/V4BOGqGIQdUaF1DzQkpOk1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bqxP53/btrVsJBtc0n/V4BOGqGIQdUaF1DzQkpOk1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqxP53%2FbtrVsJBtc0n%2FV4BOGqGIQdUaF1DzQkpOk1%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1005" data-origin-height="748" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 10"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">6. 프로그램이 최종적으로 완료되면, 아래와 같이 윈도우 탐색기에 매주 금요일의 티켓정보를 담고 있는 8주치 파일 8개가 저장됩니다.</p>
<p data-ke-size="size16">7. 아래는 우리가 원하는 시간대(17시~20시)에 티켓이 없는 경우 &#8216;티켓이 없습니다.&#8217; 라고 안내주고 있으며,</p>
<p data-ke-size="size16">1/20의 경우 설명절로 이미 티켓이 매진된것으로 보입니다.</p>
<p data-ke-size="size16">
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="919" data-origin-height="767"><span data-url="https://blog.kakaocdn.net/dn/dFjs29/btrVk4UYLiu/gAEPMjbxpIKGUavsJjVKF1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dFjs29/btrVk4UYLiu/gAEPMjbxpIKGUavsJjVKF1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFjs29%2FbtrVk4UYLiu%2FgAEPMjbxpIKGUavsJjVKF1%2Fimg.png" data-origin-width="919" data-origin-height="767" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 11"></span></figure>
<p data-ke-size="size16"> 8.매신저에서도 실시간으로 2개월치 티켓정보(총 8번)가 잘 보여지고 있습니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 008.png" data-origin-width="1053" data-origin-height="919"><span data-url="https://blog.kakaocdn.net/dn/dXL2Aa/btrVsJ9jfQf/IEWAkDSDThU43URgMTTFF0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dXL2Aa/btrVsJ9jfQf/IEWAkDSDThU43URgMTTFF0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXL2Aa%2FbtrVsJ9jfQf%2FIEWAkDSDThU43URgMTTFF0%2Fimg.png" data-filename="이미지 008.png" data-origin-width="1053" data-origin-height="919" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 12"></span></figure>
<p data-ke-size="size16"> 그럼, 우리가 원하는 날짜인 매주 금요일에 대한 날짜 정보를 얻어오는 방법에 대하여 알아 보겠습니다.</p>
<h4 data-pm-slice="1 1 []" data-en-clipboard="true" data-ke-size="size20">완성된 프로그램 실행 화면</h4>
<div data-pm-slice="1 1 []" data-en-clipboard="true"> 최종 완성된 프로그램의 결과화면은 아래와 같습니다.</div>
<p data-ke-size="size16">
<p data-ke-size="size16">1.프로그램을 실행하면 2023년 1월 중 금요일에 해당하는 날짜인 아래 4개 날짜를 리스트로 받아오는 것을 볼 수 있습니다.</p>
<p data-ke-size="size16">[&#8216;2023-01-06&#8217;, &#8216;2023-01-13&#8217;, &#8216;2023-01-20&#8217;, &#8216;2023-01-27&#8217;]</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1915" data-origin-height="246"><span data-url="https://blog.kakaocdn.net/dn/dKuTl5/btrVqJaJao8/9hDMTHIvXuN4Ay2nSwrRt1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dKuTl5/btrVqJaJao8/9hDMTHIvXuN4Ay2nSwrRt1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKuTl5%2FbtrVqJaJao8%2F9hDMTHIvXuN4Ay2nSwrRt1%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1915" data-origin-height="246" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 13"></span></figure>
<div><span data-url="https://blog.kakaocdn.net/dn/dKuTl5/btrVqJaJao8/9hDMTHIvXuN4Ay2nSwrRt1/img.png" data-lightbox="lightbox"> </span></div>
<p data-ke-size="size16">
<h4 data-ke-size="size20">주요 내용</h4>
<p data-ke-size="size16">
<p data-ke-size="size16">1. 소스코드를 먼저 살펴 보겠습니다.</p>
<p data-ke-size="size16">먼저 날짜 관련 모듈과 판다스 모듈을 임포트 해줍니다.</p>
<p data-ke-size="size16">그리고 데이터프레임형태로 날짜 데이터를 뽑아서</p>
<p data-ke-size="size16">dt_index = pd.date_range(start=&#8217;20230101&#8242;, end=&#8217;20230131&#8242;)</p>
<p data-ke-size="size16">
이 데이터프레임을 리스트로 바꿔 줍니다.<br />
dt_list = dt_index.strftime(&#8220;%Y.%m.%d&#8221;).tolist()</p>
<p data-ke-size="size16"> 금요일에 해당하는 날짜만 뽑을 것이기 때문에 이것을 담아둘 리스트 변수(fridays)를 만들어 둡니다.</p>
<p data-ke-size="size16"> for문으로 1월 날짜를 하나씩 돌면서 &#8216;금요일&#8217;인지를 찾습니다. 날짜에 해당하는 요일을 찾아주는 함수가 weekday()입니다.</p>
<p data-ke-size="size16">i.weekday()로 사용하면 해당 요일을 숫자로 표시해 줍니다.</p>
<p data-ke-size="size16"> 0   1   2   3  4   5   6</p>
<p data-ke-size="size16">월 화 수 목 금 토 일</p>
<p data-ke-size="size16"> if문으로 weekday()가 4이면 금요일 이므로 이 값을 미리 만들어둔 fridays[]리스트에 append로 담아 둡니다.</p>
<p data-ke-size="size16"> for문이 완료되면 fridays[]리스트에는 1월 중 금요일에 해당하는 날짜만 들어가게 됩니다.</p>
<p data-ke-size="size16">(자세한 내용은 아래 소스의 코멘트를 참조해 주세요.)</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 003.png" data-origin-width="806" data-origin-height="713"><span data-url="https://blog.kakaocdn.net/dn/LKjNp/btrVmfPHIVD/deyhiVrKqqhzL8RwHBwTXK/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/LKjNp/btrVmfPHIVD/deyhiVrKqqhzL8RwHBwTXK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLKjNp%2FbtrVmfPHIVD%2FdeyhiVrKqqhzL8RwHBwTXK%2Fimg.png" data-filename="이미지 003.png" data-origin-width="806" data-origin-height="713" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 14"></span></figure>
<p data-ke-size="size16"> 2. 위의 소스코드를 실행한 모습입니다.</p>
<p data-ke-size="size16">1월의 모든 날짜 정보가 &#8216;dt_list&#8217;에 들어가 있는 것을 알 수 있습니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 004.png" data-origin-width="1903" data-origin-height="751"><span data-url="https://blog.kakaocdn.net/dn/dIoxdz/btrVjO6a6pn/75RvxyheradSqOenaJIOq0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dIoxdz/btrVjO6a6pn/75RvxyheradSqOenaJIOq0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIoxdz%2FbtrVjO6a6pn%2F75RvxyheradSqOenaJIOq0%2Fimg.png" data-filename="이미지 004.png" data-origin-width="1903" data-origin-height="751" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 15"></span></figure>
<p data-ke-size="size16"> 3. 디버깅(print문 등)을 좀 제거하여 보기좋게 한다음 프로그램을 실행하면, 최종적으로 우리가 원하는 매주 금요일의 날짜 데이터를 얻어온 것을 볼 수 있습니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1915" data-origin-height="246"><span data-url="https://blog.kakaocdn.net/dn/dKuTl5/btrVqJaJao8/9hDMTHIvXuN4Ay2nSwrRt1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dKuTl5/btrVqJaJao8/9hDMTHIvXuN4Ay2nSwrRt1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKuTl5%2FbtrVqJaJao8%2F9hDMTHIvXuN4Ay2nSwrRt1%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1915" data-origin-height="246" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 13"></span></figure>
<p data-ke-size="size16">
<hr contenteditable="false" data-ke-type="horizontalRule" data-ke-style="style5" />
<p data-ke-size="size16">
<h4 data-pm-slice="1 1 []" data-en-clipboard="true" data-ke-size="size20">O 완성된 프로그램 실행 화면</h4>
<div data-pm-slice="1 1 []" data-en-clipboard="true"></div>
<p data-ke-size="size16">
<div> &#8211; 최종 완성된 프로그램의 결과화면은 아래와 같습니다.</div>
<p data-ke-size="size16">
<p data-ke-size="size16">1.프로그램을 실행하면 아래와 같은 모습으로 실행되며, 일단 이해를 위해서 간략하게 2023년 1월 중 금요일 2개만 테스트해 봅니다.</p>
<p data-ke-size="size16">[&#8216;2023-01-06&#8217;, &#8216;2023-01-13&#8217;]</p>
<p data-ke-size="size16">
<div>
<p data-ke-size="size16">
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 001.png" data-origin-width="1123" data-origin-height="887"><span data-url="https://blog.kakaocdn.net/dn/bOl9pW/btrXVlsRZKV/oIbsUek1vsLQOeItGgZSX1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bOl9pW/btrXVlsRZKV/oIbsUek1vsLQOeItGgZSX1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOl9pW%2FbtrXVlsRZKV%2FoIbsUek1vsLQOeItGgZSX1%2Fimg.png" data-filename="이미지 001.png" data-origin-width="1123" data-origin-height="887" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 17"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">2. 크롬드라이버(셀레니움)가 자동으로 웹브라우저를 실행하여 지정한 곳을 클릭하여 선택하고 있습니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 002.png" data-origin-width="1288" data-origin-height="963"><span data-url="https://blog.kakaocdn.net/dn/qGn88/btrXXhXjjgq/9xS8C6Xy5NIUHbLuiJGHQk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/qGn88/btrXXhXjjgq/9xS8C6Xy5NIUHbLuiJGHQk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqGn88%2FbtrXXhXjjgq%2F9xS8C6Xy5NIUHbLuiJGHQk%2Fimg.png" data-filename="이미지 002.png" data-origin-width="1288" data-origin-height="963" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 18"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">3.항공사별 티켓 정보를 보여주는 화면입니다.</p>
<p data-ke-size="size16">
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 003.png" data-origin-width="1303" data-origin-height="719"><span data-url="https://blog.kakaocdn.net/dn/cD5okr/btrXUqaoH1R/EXSCUm9jB7bym5PUcj8lW1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/cD5okr/btrXUqaoH1R/EXSCUm9jB7bym5PUcj8lW1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD5okr%2FbtrXUqaoH1R%2FEXSCUm9jB7bym5PUcj8lW1%2Fimg.png" data-filename="이미지 003.png" data-origin-width="1303" data-origin-height="719" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 19"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">4.최종적으로 금요일 2개 날짜에 해당하는 정보를 수집하여 엑셀파일로 저장한 모습입니다.</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 004.png" data-origin-width="855" data-origin-height="367"><span data-url="https://blog.kakaocdn.net/dn/bqwGHS/btrXXzDzHck/Qw5JEVxf7LUFKJvt1rbTkk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bqwGHS/btrXXzDzHck/Qw5JEVxf7LUFKJvt1rbTkk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqwGHS%2FbtrXXzDzHck%2FQw5JEVxf7LUFKJvt1rbTkk%2Fimg.png" data-filename="이미지 004.png" data-origin-width="855" data-origin-height="367" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 20"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">5. 파일을 열어보니 항공사별 티켓정보가 잘 저장된 것을 확인할 수 있습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1042" data-origin-height="841"><span data-url="https://blog.kakaocdn.net/dn/edF8FP/btrXVhxoJiR/Hxu7kn8jxNoml5QD469za1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/edF8FP/btrXVhxoJiR/Hxu7kn8jxNoml5QD469za1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedF8FP%2FbtrXVhxoJiR%2FHxu7kn8jxNoml5QD469za1%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1042" data-origin-height="841" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 21"></span></figure>
<p data-ke-size="size16">
<p data-ke-size="size16">
</div>
<p data-ke-size="size16">
<p data-ke-size="size16">
<hr contenteditable="false" data-ke-type="horizontalRule" data-ke-style="style5" />
<div></div>
<div></div>
<p data-ke-size="size16">
<h4 data-ke-size="size20">O 주요 내용</h4>
<p data-ke-size="size16">
<p data-ke-size="size16">1. 소스코드를 먼저 살펴 보겠습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">아래 부분 소스의 경우 다른 부분은 이전 글과 동일하며, 이해를 쉽게하기 위하여 2주치 금요일 2개만 설정하여 테스트하였습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 006.png" data-origin-width="894" data-origin-height="844"><span data-url="https://blog.kakaocdn.net/dn/WxTa5/btrXTRzdTKv/gW5gxlyKVXSwfydEYYpR60/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/WxTa5/btrXTRzdTKv/gW5gxlyKVXSwfydEYYpR60/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWxTa5%2FbtrXTRzdTKv%2FgW5gxlyKVXSwfydEYYpR60%2Fimg.png" data-filename="이미지 006.png" data-origin-width="894" data-origin-height="844" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 22"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">2. 그리고 나서 셀레니움을 사용하기 위해 크롬 드라이버를 설정해 줍니다.</p>
<p data-ke-size="size16">browser =webdriver.Chrome(&#8220;chromedriver.exe&#8221;)</p>
<p data-ke-size="size16">
<p data-ke-size="size16">셀레니움 이용 시 브라우저를 띄우고 실행하기 때문에 다소 시간이 걸리기 때문에 반드시 지연시간(time.sleep())을 넣어 주어야 에러가 발생하지 않습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 007.png" data-origin-width="1296" data-origin-height="680"><span data-url="https://blog.kakaocdn.net/dn/H3P14/btrXWxTBH8i/uhrIUet1XoO4ZNCeff4qY1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/H3P14/btrXWxTBH8i/uhrIUet1XoO4ZNCeff4qY1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH3P14%2FbtrXWxTBH8i%2FuhrIUet1XoO4ZNCeff4qY1%2Fimg.png" data-filename="이미지 007.png" data-origin-width="1296" data-origin-height="680" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 23"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">3. 아래와 같이 크롬의 검사 기능을 이용하여 순서대로 실행 후 &#8216;Copy XPath&#8217;를 클릭하면 html 태그의 위치를 알아낼 수 있습니다.</p>
<p data-ke-size="size16">메모장 등에 붙여넣기 하시면 아래와 같이 태그가 나오며, 이 태크를 위의 소스 (1) 부분에 넣어준것입니다.</p>
<p data-ke-size="size16">//*[@id=&#8221;tour_wrap&#8221;]/div[1]/div[1]/a[2]/span[1]</p>
<p data-ke-size="size16">
<p data-ke-size="size16">동일한 방법으로 (2)~(5)까지 완료하시면 되며, (4)의 경우 첫주 금요일이 1부터 시작하므로 for 루프 전에 j=1을 선언(for 루프 끝나는 부분에 j = j+1 코드 포함)하여 루프를 돌때마다 1식 증가하도록 해주었습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1341" data-origin-height="617"><span data-url="https://blog.kakaocdn.net/dn/BKvdc/btrXZPFWaWO/o7DorIWAw1P3OGmDkxX5qk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/BKvdc/btrXZPFWaWO/o7DorIWAw1P3OGmDkxX5qk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBKvdc%2FbtrXZPFWaWO%2Fo7DorIWAw1P3OGmDkxX5qk%2Fimg.png" data-origin-width="1341" data-origin-height="617" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 24"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">4. 다음은 파이썬의 BeautifulSoup를 이용하여 옥션 항공티켓 정보를 크롤링하는 소스입니다.</p>
<p data-ke-size="size16">웹 페이지의 소스를 가져와서, 이를 이쁘게(?) 파싱하기 위해 아래와 같이 코딩합니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">라인 71~72</p>
<p data-ke-size="size16">html_souce = browser.page_source<br />
soup = BeautifulSoup(html_souce, &#8216;html.parser&#8217;)</p>
<p data-ke-size="size16">
<p data-ke-size="size16">그리고 원하는 부분만 가오기 위해 아래와 같이 find를 사용하여 모든 티켓정보를 가져온 후, find_all을 사용하여 개별 티켓정보를 가져온 후 ticket_list 변수에 담습니다.</p>
<p data-ke-size="size16">라인 77</p>
<p data-ke-size="size16">ticket_list = soup.find(class_=&#8217;simplebar-content&#8217;).find_all(class_=&#8217;gt_offer_list_item srpResultLi&#8217;)</p>
<p data-ke-size="size16">(class_=&#8217;simplebar-content&#8217; 은 유일하므로 find를 사용하고, class_=&#8217;gt_offer_list_item srpResultLi&#8217; 은 여러개 존재하므로 find_all을 사용)</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 008.png" data-origin-width="1204" data-origin-height="663"><span data-url="https://blog.kakaocdn.net/dn/MYoLf/btrXWKL7T95/pnscqqCm2wFkBOiv9FqSIK/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/MYoLf/btrXWKL7T95/pnscqqCm2wFkBOiv9FqSIK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMYoLf%2FbtrXWKL7T95%2FpnscqqCm2wFkBOiv9FqSIK%2Fimg.png" data-filename="이미지 008.png" data-origin-width="1204" data-origin-height="663" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 25"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">아래 자세히 보면 (2)번에 마우스를 갖다대면 왼쪽의 음영(모든 티켓)이 선택되는 것을 볼 수 있습니다. 이것으로 이 태그가 모든 티켓을 나타냄을 알 수 있습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1563" data-origin-height="783"><span data-url="https://blog.kakaocdn.net/dn/651jI/btrXTQG61wm/rF3fcD0LUiSPye5ErRLeF0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/651jI/btrXTQG61wm/rF3fcD0LUiSPye5ErRLeF0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F651jI%2FbtrXTQG61wm%2FrF3fcD0LUiSPye5ErRLeF0%2Fimg.png" data-origin-width="1563" data-origin-height="783" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 26"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16"> 아래 오른 쪽 &lt;li&gt;태그에 마우스를 갖다대면 마찬가지로 왼쪽에 음영이 생기는데, 이번에는 티켓 하나만 선택 되었습니다.</p>
<p data-ke-size="size16">즉, 이 태그가 하나의 티켓을 가리키고 있다는 것을 알 수 있습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1558" data-origin-height="856"><span data-url="https://blog.kakaocdn.net/dn/bx6uYq/btrXZvALlrY/M55NVHKOUWUTLCSad3VX7K/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bx6uYq/btrXZvALlrY/M55NVHKOUWUTLCSad3VX7K/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx6uYq%2FbtrXZvALlrY%2FM55NVHKOUWUTLCSad3VX7K%2Fimg.png" data-origin-width="1558" data-origin-height="856" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 27"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">위의 소스는 일단 테스트를 위해 티켓 하나에 대한 정보만 가져와서 뿌려보았습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">라인 83</p>
<p data-ke-size="size16">print(ticket_list[0])</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">특정 태그를 선택 시 find 또는 select를 사용할 수 있으며, 기호에 맞게 사용하시면 되며, 저는 find를 사용하였습니다.</p>
<p data-ke-size="size16">라인 84~85</p>
<p data-ke-size="size16">print(ticket_list[0].find(&#8220;div&#8221;,class_=&#8217;gt_offer_col gt_offer_company&#8217;).text.strip())</p>
<p data-ke-size="size16">print(ticket_list[0].select(&#8216;div.gt_offer_col.gt_offer_company &gt; img&#8217;)[0][&#8216;alt&#8217;],&#8221;+++++++++++++&#8221;)</p>
<p data-ke-size="size16">위의 84라인은 해당 클래스에 해당하는 태그 정보 중 텍스트를 가져오는 것인데, strip()를 사용하여 양쪽 옆 빈칸을 제거해 주고 있습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">5. 위에서 티켓정보 1개만 가져와서 테스트해 본 결과 잘되는 것을 확인하였으므로, 이제 티켓정보를 모두 가져오는 코드를 아래와 같이 작성합니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">소스에 대한 설명은 아래를 참고하시기 바랍니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1429" data-origin-height="843"><span data-url="https://blog.kakaocdn.net/dn/cElcYo/btrXUSq49v2/Sjt9TAVObA3jBSFD7jlfC1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/cElcYo/btrXUSq49v2/Sjt9TAVObA3jBSFD7jlfC1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcElcYo%2FbtrXUSq49v2%2FSjt9TAVObA3jBSFD7jlfC1%2Fimg.png" data-origin-width="1429" data-origin-height="843" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 28"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">6. 실행 결과 엑셀 파일이 잘 생성된 것을 확인 할 수 있으며,</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="793" data-origin-height="309"><span data-url="https://blog.kakaocdn.net/dn/nI9zd/btrXUSkkst7/CWkQmY4k4vyHEDnKYGmA41/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/nI9zd/btrXUSkkst7/CWkQmY4k4vyHEDnKYGmA41/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnI9zd%2FbtrXUSkkst7%2FCWkQmY4k4vyHEDnKYGmA41%2Fimg.png" data-origin-width="793" data-origin-height="309" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 29"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">7. 엑셀 파일을 열어보니 내용(티켓 정보)이 잘 입력된 것을 볼 수 있습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1438" data-origin-height="445"><span data-url="https://blog.kakaocdn.net/dn/bb0DJY/btrXVgebSX1/KYBMtFWq0UphAVFPK8ios1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bb0DJY/btrXVgebSX1/KYBMtFWq0UphAVFPK8ios1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb0DJY%2FbtrXVgebSX1%2FKYBMtFWq0UphAVFPK8ios1%2Fimg.png" data-origin-width="1438" data-origin-height="445" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 30"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<h4 data-pm-slice="1 1 []" data-en-clipboard="true" data-ke-size="size20">O 완성된 프로그램 실행 화면</h4>
<div data-pm-slice="1 1 []" data-en-clipboard="true"></div>
<p data-ke-size="size16">
<div> &#8211; 최종 완성된 프로그램의 결과화면은 아래와 같습니다.</div>
<p data-ke-size="size16">
<p data-ke-size="size16">1.프로그램을 실행하면 아래와 같은 모습으로 실행되며, 일단 쉬운 이해를 위해서 간략하게 2023년 2월 중 금요일 2개만, 그리고 티켓리스트 중 위에서부터 10개만 테스트해 보았습니다.</p>
<p data-ke-size="size16">[&#8216;2023-03-06&#8217;, &#8216;2023-01-13&#8217;]</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 001.png" data-origin-width="839" data-origin-height="205"><span data-url="https://blog.kakaocdn.net/dn/lqXxm/btrXVZCRT3J/iKpffLXMJGGcd70bS0T3b1/img.png" data-lightbox="lightbox" data-alt="3"><img decoding="async" src="https://blog.kakaocdn.net/dn/lqXxm/btrXVZCRT3J/iKpffLXMJGGcd70bS0T3b1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlqXxm%2FbtrXVZCRT3J%2FiKpffLXMJGGcd70bS0T3b1%2Fimg.png" data-filename="이미지 001.png" data-origin-width="839" data-origin-height="205" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 31"></span><figcaption>3</figcaption></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">2. 프로그램 실행 결과 2/3일자 티켓 상위 10개 중 17~21시 조건을 만족하는 티켓은 없었습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1261" data-origin-height="996"><span data-url="https://blog.kakaocdn.net/dn/2J3r5/btrXUWtmpkL/STKpu5sOw9VBSSdk6a9Kv0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/2J3r5/btrXUWtmpkL/STKpu5sOw9VBSSdk6a9Kv0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2J3r5%2FbtrXUWtmpkL%2FSTKpu5sOw9VBSSdk6a9Kv0%2Fimg.png" data-origin-width="1261" data-origin-height="996" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 32"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">아래에서 보듯이 상위 10개 티켓 중 17시 이후에 출발하는 비행기는 없습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 003.png" data-origin-width="1231" data-origin-height="764"><span data-url="https://blog.kakaocdn.net/dn/egIJap/btrXXydBxXL/S0sJFH9lAtoxwITcKhjMf1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/egIJap/btrXXydBxXL/S0sJFH9lAtoxwITcKhjMf1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FegIJap%2FbtrXXydBxXL%2FS0sJFH9lAtoxwITcKhjMf1%2Fimg.png" data-filename="이미지 003.png" data-origin-width="1231" data-origin-height="764" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 33"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">3. 2월 10일자는 티켓 상위 10개 중 17~21시 조건을 만족하는 티켓이 아래와 같이 1개 존재하는 것을 확인하였습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 004.png" data-origin-width="1254" data-origin-height="783"><span data-url="https://blog.kakaocdn.net/dn/bnaDyu/btrXXhptuQd/30vf6UHFzpF9OKrnr3KutK/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bnaDyu/btrXXhptuQd/30vf6UHFzpF9OKrnr3KutK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnaDyu%2FbtrXXhptuQd%2F30vf6UHFzpF9OKrnr3KutK%2Fimg.png" data-filename="이미지 004.png" data-origin-width="1254" data-origin-height="783" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 34"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">실제 옥션 웹페이지에서 확인 결과도 위에서 2번째 티켓이 우리의 시간 조건(17~21시)에 맞는 것을 확인할 수 있습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1303" data-origin-height="839"><span data-url="https://blog.kakaocdn.net/dn/Lj0fj/btrXTQNSxmN/HXNEhmAiWhGCf1dBMqkkz0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/Lj0fj/btrXTQNSxmN/HXNEhmAiWhGCf1dBMqkkz0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLj0fj%2FbtrXTQNSxmN%2FHXNEhmAiWhGCf1dBMqkkz0%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1303" data-origin-height="839" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 35"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16"> 1. 소스를 살펴보겠습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">다른 부분은 이전 글의 소스와 모두 동일하므로 아래 주요 부분만 설명드리겠습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">라인 131 : 웹페이지에서 출발시각 및 도착 시각 정보를 가져옵니다. (11:25  12:35)</p>
<p data-ke-size="size16">라인 132 : 위에서 가져온 시각 정보 중 출발시각 정보만 뽑습니다. (11:25)</p>
<p data-ke-size="size16">라인 133 : 시간 비교를 위해서 데이터 포멧을 str -&gt; date형으로 바꿔 줍니다.</p>
<p data-ke-size="size16">라인 134 : 크롤링해서 가져온 시각을 중심으로 비교하기 위해 mytime변수에 그 시각 정보를 넣어 줍니다.(mytime = 1900-01-01 11:25:00)</p>
<p data-ke-size="size16">라인 136 : 시간조건의 시작 시간을 지정해 줍니다.(1900-01-01 17:00:00)</p>
<p data-ke-size="size16">라인 138 : 시간조건의 끝 시간을 지정해 줍니다.(1900-01-01 21:00:00)</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1572" data-origin-height="864"><span data-url="https://blog.kakaocdn.net/dn/IVac3/btrXZQrl8cb/lE54BfW1D3O5msOW2ZWDFk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/IVac3/btrXZQrl8cb/lE54BfW1D3O5msOW2ZWDFk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIVac3%2FbtrXZQrl8cb%2FlE54BfW1D3O5msOW2ZWDFk%2Fimg.png" data-origin-width="1572" data-origin-height="864" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 36"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">아래 구글 크롬에서 출발 시각 우클릭 &gt; 검사 클릭 시 오른쪽 화면에서 아래와 같이 출발 시각이 선택된 것을 확인할 수 있습니다.</p>
<p data-ke-size="size16">time_ = ticket_list[i].find(&#8220;div&#8221;,class_=&#8217;gt_offer_col gt_offer_time&#8217;).text.strip()</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 007.png" data-origin-width="1855" data-origin-height="867"><span data-url="https://blog.kakaocdn.net/dn/dENGiS/btrXUpWS2rA/w5X60hKYpNM8jqS7azoZAk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dENGiS/btrXUpWS2rA/w5X60hKYpNM8jqS7azoZAk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdENGiS%2FbtrXUpWS2rA%2Fw5X60hKYpNM8jqS7azoZAk%2Fimg.png" data-filename="이미지 007.png" data-origin-width="1855" data-origin-height="867" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 37"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<h4 data-pm-slice="1 1 []" data-en-clipboard="true" data-ke-size="size20"> 완성된 프로그램 실행 화면</h4>
<div>
<div> 최종 완성된 프로그램의 결과화면은 아래와 같습니다.</div>
<p data-ke-size="size16">
<p data-ke-size="size16">1.프로그램을 실행하면 아래와 같은 모습으로 실행되며, 일단 쉬운 이해를 위해서 간략하게 2023년 2월 중 금요일 2개만, 그리고 해당 요일의 전체 티켓리스트 중 위에서부터 10개만 테스트해 보았습니다.</p>
<p data-ke-size="size16">[&#8216;2023-02-10&#8217;, &#8216;2023-02-17&#8217;]</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">아래 프로그램 실행 결과 &#8216;2023-02-10&#8217;과 &#8216;2023-02-17&#8217; 2개 금요일만 테스트하며, 2월 10일은 조건에 맞는 티켓이 없음을 알 수 있습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1055" data-origin-height="542"><span data-url="https://blog.kakaocdn.net/dn/b9YB99/btrYkKSsUXz/0HlWcUdfZ6ABdgpHoi0Dvk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/b9YB99/btrYkKSsUXz/0HlWcUdfZ6ABdgpHoi0Dvk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9YB99%2FbtrYkKSsUXz%2F0HlWcUdfZ6ABdgpHoi0Dvk%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1055" data-origin-height="542" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 38"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">실제 옥션 항공 웹페이지 화면에서 확인해도 조건에 맞는 티켓이 없는 것을 알 수 있습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1227" data-origin-height="854"><span data-url="https://blog.kakaocdn.net/dn/FAPnt/btrYpmJ4leu/uPO6c7Udh9MkbOVT4Sh9Xk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/FAPnt/btrYpmJ4leu/uPO6c7Udh9MkbOVT4Sh9Xk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFAPnt%2FbtrYpmJ4leu%2FuPO6c7Udh9MkbOVT4Sh9Xk%2Fimg.png" data-origin-width="1227" data-origin-height="854" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 39"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">2. 두번째 날짜인 2월 17일의 경우 상위 10개 중 4개가 만족하여 리스트 되고 있습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 007.png" data-origin-width="1538" data-origin-height="703"><span data-url="https://blog.kakaocdn.net/dn/cMwG9X/btrYmuuQ2Jx/Q294QOp9QK6AABmEJIR661/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/cMwG9X/btrYmuuQ2Jx/Q294QOp9QK6AABmEJIR661/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMwG9X%2FbtrYmuuQ2Jx%2FQ294QOp9QK6AABmEJIR661%2Fimg.png" data-filename="이미지 007.png" data-origin-width="1538" data-origin-height="703" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 40"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">실제 옥션 항공 웹페이지 화면 확인 결과 아래 4개가 만족하여 리스트되고 있는 것을 확인 할 수 있습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 008.png" data-origin-width="1280" data-origin-height="833"><span data-url="https://blog.kakaocdn.net/dn/mgntB/btrYidIdPa5/aweXJBlsVj8t7WphWQAwMk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/mgntB/btrYidIdPa5/aweXJBlsVj8t7WphWQAwMk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmgntB%2FbtrYidIdPa5%2FaweXJBlsVj8t7WphWQAwMk%2Fimg.png" data-filename="이미지 008.png" data-origin-width="1280" data-origin-height="833" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 41"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">다음글에서는 이전 글들을 조합하여 실제 우리가 원하는 금요일 티켓의 17~21시 사이 티켓들 중에서 가격이 가장싼 티켓을 선택하여 나에게 메신저로 알려주는 방법에 대하여 알아 보겠습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<hr contenteditable="false" data-ke-type="horizontalRule" data-ke-style="style5" />
<div></div>
<div></div>
<p data-ke-size="size16">
<h4 data-ke-size="size20">O 주요 내용</h4>
<p data-ke-size="size16">
<p data-ke-size="size16">1. 소스를 살펴보겠습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">다른 부분은 이전 글의 소스와 모두 동일하므로 달라진 부분만 설명드리겠습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">print(airline_ticket_df) &lt;&#8211; (1) 수집한 티켓정보를 데이터 프레임 형식을 표시(아래 참고)</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="581" data-origin-height="85"><span data-url="https://blog.kakaocdn.net/dn/bnZLWY/btrYphB02de/juicsLf30NLeRTFkRodVz0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bnZLWY/btrYphB02de/juicsLf30NLeRTFkRodVz0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnZLWY%2FbtrYphB02de%2FjuicsLf30NLeRTFkRodVz0%2Fimg.png" data-origin-width="581" data-origin-height="85" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 42"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">    try:<br />
print(airline_ticket_df.loc[airline_ticket_df[&#8220;편도1인요금&#8221;].idxmin()]) &lt;&#8211; (2) 데이터프레임에서 &#8216;편도1인요금&#8217; 컬럼 중 숫자가 가장작은 부분을 상세하게 출력</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="292" data-origin-height="116"><span data-url="https://blog.kakaocdn.net/dn/bUFaMR/btrYjeUlWzj/nS0BcwJF57ajzaandnknO0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bUFaMR/btrYjeUlWzj/nS0BcwJF57ajzaandnknO0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUFaMR%2FbtrYjeUlWzj%2FnS0BcwJF57ajzaandnknO0%2Fimg.png" data-origin-width="292" data-origin-height="116" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 43"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">        print(airline_ticket_df[&#8216;편도1인요금&#8217;].min()) &lt;&#8211; (3) 데이터프레임에서 &#8216;편도1인요금&#8217; 컬럼 중 가장 작은 숫자만 표시</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="72" data-origin-height="27"><span data-url="https://blog.kakaocdn.net/dn/qzmso/btrYj11h58I/ZnMuZXFIkTm5MRi84M96bK/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/qzmso/btrYj11h58I/ZnMuZXFIkTm5MRi84M96bK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqzmso%2FbtrYj11h58I%2FZnMuZXFIkTm5MRi84M96bK%2Fimg.png" data-origin-width="72" data-origin-height="27" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 44"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
except:<br />
pass<br />
print(k, &#8221; 일자는 조건을 만족하는 티켓이 없습니다.&#8221;)</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1456" data-origin-height="489"><span data-url="https://blog.kakaocdn.net/dn/bEiyiB/btrYlu9GJp1/yQPLk5i1UwfYHsby7i48n0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bEiyiB/btrYlu9GJp1/yQPLk5i1UwfYHsby7i48n0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEiyiB%2FbtrYlu9GJp1%2FyQPLk5i1UwfYHsby7i48n0%2Fimg.png" data-origin-width="1456" data-origin-height="489" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 45"></span></figure>
<p>&nbsp;</p>
</div>
<p data-ke-size="size16">
<h4 data-pm-slice="1 1 []" data-en-clipboard="true" data-ke-size="size20">완성된 프로그램 실행 화면</h4>
<div data-pm-slice="1 1 []" data-en-clipboard="true"></div>
<p data-ke-size="size16">
<div> &#8211; 최종 완성된 프로그램의 결과화면은 아래와 같습니다.</div>
<p data-ke-size="size16">
<p data-ke-size="size16">1.프로그램을 실행하면 아래와 같은 모습으로 실행되며, 아래 프로그램을 실행한 시점은 2월 8일, 따라서 2월~3월의 금요일인 2/10~3/31까지 총 8번에 걸쳐 티켓정보를 수집합니다.</p>
<p data-ke-size="size16">[&#8216;2023-02-10&#8217;, &#8216;2023-02-17&#8217;, &#8216;2023-02-24&#8217;, &#8216;2023-03-03&#8217;, &#8216;2023-03-10&#8217;, &#8216;2023-03-17&#8217;, &#8216;2023-03-24&#8217;, &#8216;2023-03-31&#8217;]</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 001.png" data-origin-width="1448" data-origin-height="958"><span data-url="https://blog.kakaocdn.net/dn/lJlXq/btrYphD2JU6/sPCcJXmMtKFgTMw3prUyiK/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/lJlXq/btrYphD2JU6/sPCcJXmMtKFgTMw3prUyiK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlJlXq%2FbtrYphD2JU6%2FsPCcJXmMtKFgTMw3prUyiK%2Fimg.png" data-filename="이미지 001.png" data-origin-width="1448" data-origin-height="958" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 46"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">2.아래와 같이 파이썬의 셀레니움으로 크롬 브라우저를 자동으로 띄워 원하는 일자의 티켓정보를 수집하기위해 자동으로 클릭하기 시작합니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 002.png" data-origin-width="1103" data-origin-height="938"><span data-url="https://blog.kakaocdn.net/dn/Jleh1/btrYqTh9jOW/tEZiwlTGuxWEb4wFnRRyvk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/Jleh1/btrYqTh9jOW/tEZiwlTGuxWEb4wFnRRyvk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJleh1%2FbtrYqTh9jOW%2FtEZiwlTGuxWEb4wFnRRyvk%2Fimg.png" data-filename="이미지 002.png" data-origin-width="1103" data-origin-height="938" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 47"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">3. 파이썬의 크롤링 기법으로 2개월치 데이터를 가져오고 있습니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 003.png" data-origin-width="977" data-origin-height="831"><span data-url="https://blog.kakaocdn.net/dn/bUjSWS/btrYrUOnMXM/K56kMn0dCS8y8ES8gYHmk1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bUjSWS/btrYrUOnMXM/K56kMn0dCS8y8ES8gYHmk1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUjSWS%2FbtrYrUOnMXM%2FK56kMn0dCS8y8ES8gYHmk1%2Fimg.png" data-filename="이미지 003.png" data-origin-width="977" data-origin-height="831" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 48"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">4. 텔레그램 메신저에 해당 일자의 최저가 티켓 정보와 나머지 티켓 정보도 확인할 수 있도록 파일로 보내줍니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 004.png" data-origin-width="861" data-origin-height="864"><span data-url="https://blog.kakaocdn.net/dn/czRcbn/btrYr9xRBRf/uyCACK2FOjwHAACGhvUH4K/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/czRcbn/btrYr9xRBRf/uyCACK2FOjwHAACGhvUH4K/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczRcbn%2FbtrYr9xRBRf%2FuyCACK2FOjwHAACGhvUH4K%2Fimg.png" data-filename="이미지 004.png" data-origin-width="861" data-origin-height="864" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 49"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16"> 5. 파일 탐색기에서 확인한 결과 파일로 티켓의 정보가 잘 저장되고 있는 것을 확인할 수 있습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 005.png" data-origin-width="1022" data-origin-height="545"><span data-url="https://blog.kakaocdn.net/dn/1Tl5c/btrYroviAtI/FKk8AEftk1pL1xtxTnt6O1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/1Tl5c/btrYroviAtI/FKk8AEftk1pL1xtxTnt6O1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Tl5c%2FbtrYroviAtI%2FFKk8AEftk1pL1xtxTnt6O1%2Fimg.png" data-filename="이미지 005.png" data-origin-width="1022" data-origin-height="545" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 50"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">6. 2/10일자 파일을 열어보니 파일 내용에 티켓의 세부정보가 잘 저장된 것을 확인 할 수 있습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 006.png" data-origin-width="1043" data-origin-height="884"><span data-url="https://blog.kakaocdn.net/dn/dUFB9z/btrYq44RXN9/dlxEHlAlKAD6q1zBaoTos1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dUFB9z/btrYq44RXN9/dlxEHlAlKAD6q1zBaoTos1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUFB9z%2FbtrYq44RXN9%2FdlxEHlAlKAD6q1zBaoTos1%2Fimg.png" data-filename="이미지 006.png" data-origin-width="1043" data-origin-height="884" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 51"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">7. 3/31일자까지 모두 자동 수행 후 모든 파일이 탐색기에 저장된 것을 볼 수 있습니다. 다만, 프로그램을 실행한 날짜가 2/8 이므로 그 전 날짜의 티켓인 2/3일자 티켓은 제외하고 나머지 2~3월 금요일의 모든 티켓정보가 저장되었습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="741" data-origin-height="737"><span data-url="https://blog.kakaocdn.net/dn/eN4oy9/btrYvm4numV/FCyKQ1Dwh6it2VLorldyWk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/eN4oy9/btrYvm4numV/FCyKQ1Dwh6it2VLorldyWk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeN4oy9%2FbtrYvm4numV%2FFCyKQ1Dwh6it2VLorldyWk%2Fimg.png" data-origin-width="741" data-origin-height="737" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 52"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">
<p data-ke-size="size16">8. 메신저로도 모두 최저가 정보와 모든 티켓정보가 담긴 파일로 잘 수신되었습니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 008.png" data-origin-width="1047" data-origin-height="968"><span data-url="https://blog.kakaocdn.net/dn/cfEtql/btrYqAiW5Tv/0ynLBg5vJ5V5Xyg69hvlR0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/cfEtql/btrYqAiW5Tv/0ynLBg5vJ5V5Xyg69hvlR0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfEtql%2FbtrYqAiW5Tv%2F0ynLBg5vJ5V5Xyg69hvlR0%2Fimg.png" data-filename="이미지 008.png" data-origin-width="1047" data-origin-height="968" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 53"></span></figure>
<hr contenteditable="false" data-ke-type="horizontalRule" data-ke-style="style5" />
<p data-ke-size="size16"> 세부 내용</p>
<h4 data-ke-size="size20">O 완성된 소스</h4>
<p data-ke-size="size16">소스 : 1.py</p>
<pre id="code_1679754120731" class="python" data-ke-language="python" data-ke-type="codeblock"><code class="hljs"><span class="hljs-keyword">import</span> datetime
<span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime, timedelta, date
<span class="hljs-keyword">from</span> dateutil <span class="hljs-keyword">import</span> relativedelta
<span class="hljs-keyword">from</span> selenium <span class="hljs-keyword">import</span> webdriver <span class="hljs-comment"># pip install selenium</span>
<span class="hljs-keyword">from</span> selenium.webdriver.common.by <span class="hljs-keyword">import</span> By
<span class="hljs-keyword">import</span> time
<span class="hljs-keyword">from</span> openpyxl <span class="hljs-keyword">import</span> Workbook
<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd
<span class="hljs-keyword">from</span> selenium.webdriver.common.keys <span class="hljs-keyword">import</span> Keys
<span class="hljs-keyword">from</span> bs4 <span class="hljs-keyword">import</span> BeautifulSoup
<span class="hljs-keyword">import</span> telegram


<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd


<span class="hljs-comment"># 텔레그램 설정 부분</span>
bot = telegram.Bot(token=<span class="hljs-string">'자산의 텔레그램 봇 엑세스 키'</span>)


<span class="hljs-comment">###################################################</span>
<span class="hljs-comment"># 1. 금요일의 날짜를 구하여 리스트에 담기</span>
<span class="hljs-comment">###################################################</span>
today = date.today()


<span class="hljs-comment">#해당 달의 첫째날 구하기</span>
first_day = today.replace(day=<span class="hljs-number">1</span>)

this_month = datetime(today.year, today.month, day=<span class="hljs-number">1</span>)
next_2month = this_month + relativedelta.relativedelta(months=<span class="hljs-number">2</span>)
last_day = next_2month - timedelta(days=<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(last_day.strftime(<span class="hljs-string">"%Y%m%d"</span>))
endDate = last_day.strftime(<span class="hljs-string">"%Y%m%d"</span>)

startDate = datetime.today().strftime(<span class="hljs-string">"%Y%m%d"</span>)

dt_index = pd.date_range(start=startDate, end=endDate)


dt_list = dt_index.strftime(<span class="hljs-string">"%Y.%m.%d"</span>).tolist()


fridays = []

<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> dt_list:
    i = datetime.strptime(i, <span class="hljs-string">'%Y.%m.%d'</span>)
    <span class="hljs-keyword">if</span> i.weekday() == <span class="hljs-number">4</span>:
        j = <span class="hljs-built_in">str</span>(i)
        fridays.append(j[:<span class="hljs-number">10</span>])

<span class="hljs-built_in">print</span>(fridays)
<span class="hljs-comment"># ['2023-01-06', '2023-01-13', '2023-01-20', '2023-01-27']</span>


<span class="hljs-comment">###################################################</span>
<span class="hljs-comment"># 2. 셀레니움으로 옥션 항공티켓 정보 가져오기</span>
<span class="hljs-comment">###################################################</span>

browser =webdriver.Chrome(<span class="hljs-string">"chromedriver.exe"</span>)


j = <span class="hljs-number">3</span> <span class="hljs-comment"># j는 1은 첫째주, 2는 둘째주, 3은 셋째주, 4는 네째주임</span>
l = <span class="hljs-number">1</span> <span class="hljs-comment"># 1이면 가는날 창의 완쪽, 2이면 가는날 창의 오른쪽임</span>

<span class="hljs-keyword">for</span> k <span class="hljs-keyword">in</span> fridays:
    time.sleep(<span class="hljs-number">2</span>)
    browser.get(<span class="hljs-string">"http://air.auction.co.kr/au/init/lp/lpMain.do"</span>)

    time.sleep(<span class="hljs-number">2</span>)
    browser.find_element(By.XPATH,<span class="hljs-string">'//*[@id="tour_wrap"]/div[1]/div[1]/a[2]/span[1]'</span>).click() <span class="hljs-comment"># 국내항공</span>

    time.sleep(<span class="hljs-number">2</span>)
    browser.find_element(By.XPATH,<span class="hljs-string">'//*[@id="tour_wrap"]/div[1]/div[4]/div[2]/div[3]/a[1]'</span>).click() <span class="hljs-comment"># 편도</span>
    time.sleep(<span class="hljs-number">2</span>)
    browser.find_element(By.XPATH,<span class="hljs-string">'//*[@id="tour_wrap"]/div[1]/div[4]/div[2]/div[4]/div[4]/div[1]/div/span'</span>).click() <span class="hljs-comment"># 가는날</span>
    time.sleep(<span class="hljs-number">2</span>)


    browser.find_element(By.XPATH,<span class="hljs-string">'//*[@id="ui-datepicker-div"]/div['</span>+<span class="hljs-built_in">str</span>(l)+<span class="hljs-string">']/table/tbody/tr['</span>+<span class="hljs-built_in">str</span>(j)+<span class="hljs-string">']/td[6]/a'</span>).click() <span class="hljs-comment"># 1/6 일</span>
    time.sleep(<span class="hljs-number">1</span>)


    browser.find_element(By.XPATH,<span class="hljs-string">'//*[@id="tour_wrap"]/div[1]/div[4]/div[4]/a/span'</span>).click() <span class="hljs-comment"># 검색하기</span>
    time.sleep(<span class="hljs-number">15</span>)


    html_souce = browser.page_source
    soup = BeautifulSoup(html_souce, <span class="hljs-string">'html.parser'</span>)

    ticket_list = soup.find(class_=<span class="hljs-string">'simplebar-content'</span>).find_all(class_=<span class="hljs-string">'gt_offer_list_item srpResultLi'</span>)
    <span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(ticket_list))
    <span class="hljs-built_in">print</span>(<span class="hljs-built_in">len</span>(ticket_list))

    <span class="hljs-built_in">print</span>(<span class="hljs-string">"========================================================================"</span>)
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>])
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_company'</span>).text.strip())
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].select(<span class="hljs-string">'div.gt_offer_col.gt_offer_company &gt; img'</span>)[<span class="hljs-number">0</span>][<span class="hljs-string">'alt'</span>],<span class="hljs-string">"+++++++++++++"</span>)
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_time'</span>).text.strip())
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_level'</span>).text.strip())
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_vender'</span>).text.strip())
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_seats2'</span>).text.strip())
    <span class="hljs-built_in">print</span>(ticket_list[<span class="hljs-number">0</span>].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_price2'</span>).text.strip())



    companys = []
    times_ = []
    levels = []
    venders = []
    seats = []
    prices = []

    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(ticket_list)):
        time_ = ticket_list[i].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_time'</span>).text.strip()
        time_ = time_[<span class="hljs-number">0</span>:<span class="hljs-number">5</span>]
        dateFormatter = <span class="hljs-string">"%H:%M"</span> <span class="hljs-comment"># 날짜 포멧 맞추기</span>
        mytime = datetime.strptime(time_, dateFormatter)
        first_time = datetime.strptime(<span class="hljs-string">"17:00"</span>, dateFormatter)
        last_time = datetime.strptime(<span class="hljs-string">"21:00"</span>, dateFormatter)


        <span class="hljs-keyword">if</span> mytime &gt; first_time <span class="hljs-keyword">and</span> mytime &lt; last_time:
            company = ticket_list[i].select(<span class="hljs-string">'div.gt_offer_col.gt_offer_company &gt; img'</span>)[<span class="hljs-number">0</span>][<span class="hljs-string">'alt'</span>]
            time_ = ticket_list[i].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_time'</span>).text.strip()
            level = ticket_list[i].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_level'</span>).text.strip()
            vender = ticket_list[i].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_vender'</span>).text.strip()
            seat = ticket_list[i].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_seats2'</span>).text.strip()
            price = ticket_list[i].find(<span class="hljs-string">"div"</span>,class_=<span class="hljs-string">'gt_offer_col gt_offer_price2'</span>).text.strip().replace(<span class="hljs-string">'스마일페이 결제 가능'</span>,<span class="hljs-string">''</span>).replace(<span class="hljs-string">','</span>,<span class="hljs-string">''</span>)

            <span class="hljs-built_in">print</span>(company, time_, level, vender, seat, price)

            companys.append(company)
            times_.append(time_)
            levels.append(level)
            venders.append(vender)
            seats.append(seat)
            prices.append(price)
        <span class="hljs-keyword">else</span>:
            <span class="hljs-keyword">pass</span>


    pd_data = {<span class="hljs-string">"항공사"</span> : companys, <span class="hljs-string">"출발/도착 시간"</span> : times_, <span class="hljs-string">"좌석구분"</span>: levels, <span class="hljs-string">"판매사"</span>: venders, <span class="hljs-string">"잔여좌석"</span>: seats, <span class="hljs-string">"편도1인요금"</span>: prices}
    airline_ticket_df = pd.DataFrame(pd_data)
    airline_ticket_df[<span class="hljs-string">'편도1인요금'</span>] = pd.to_numeric(airline_ticket_df[<span class="hljs-string">'편도1인요금'</span>]) <span class="hljs-comment"># 이걸 안해주면 시리즈 타입으로 .idxmin()에서 에러 발생, 숫자 타입으로 변경해 줘야 함</span>

    airline_ticket_result = <span class="hljs-string">'airline_ticket_result_'</span>+<span class="hljs-built_in">str</span>(k)+<span class="hljs-string">'.xlsx'</span>

    airline_ticket_df.to_excel(airline_ticket_result)
    time.sleep(<span class="hljs-number">1</span>)


    <span class="hljs-keyword">try</span>:
        <span class="hljs-keyword">pass</span>
        <span class="hljs-built_in">print</span>(airline_ticket_df.loc[airline_ticket_df[<span class="hljs-string">"편도1인요금"</span>].idxmin()])
        minticketInfo = airline_ticket_df.loc[airline_ticket_df[<span class="hljs-string">"편도1인요금"</span>].idxmin()]
        <span class="hljs-built_in">print</span>(airline_ticket_df[<span class="hljs-string">'편도1인요금'</span>].<span class="hljs-built_in">min</span>())


        <span class="hljs-comment"># 텔레그램으로 메시지 보내기</span>
        bot.sendMessage(chat_id=<span class="hljs-string">'본인의 챗id'</span>, text=<span class="hljs-string">'옥션 항공티켓 최저가 정보인 '</span> +airline_ticket_result+<span class="hljs-string">' 파일입니다.\n'</span>+<span class="hljs-built_in">str</span>(minticketInfo))


        <span class="hljs-comment"># 텔레그램으로 파일 보내기</span>
        bot.send_document(chat_id=<span class="hljs-string">'본인의 챗id'</span>, document=<span class="hljs-built_in">open</span>(airline_ticket_result, <span class="hljs-string">'rb'</span>), filename=airline_ticket_result)
    <span class="hljs-keyword">except</span>:
        <span class="hljs-keyword">pass</span>
        bot.sendMessage(chat_id=<span class="hljs-string">'본인의 챗id'</span>, text=<span class="hljs-built_in">str</span>(k)+<span class="hljs-string">' 날짜는 티켓정보가 없습니다.\n(해당 시간대 티켓이 없거나, 기타 다른 이유 등으로 티켓정보를 받아올 수 없습니다.) '</span>)

    <span class="hljs-built_in">print</span>(<span class="hljs-string">"========================================================================"</span>)

    j = j + <span class="hljs-number">1</span>
    <span class="hljs-keyword">if</span> j &gt; <span class="hljs-number">4</span>:
        j = <span class="hljs-number">1</span> <span class="hljs-comment"># 네번째 주가 넘어가면 다시 다음월의 첫째주가 되므로 j=1로 초기화 해주고,</span>
        l = <span class="hljs-number">2</span> <span class="hljs-comment"># 4주가 넘어가면 다음월 즉, 오른쪽 창에서 선택해야 하므로 l을 2로 바꿔줌</span></code></pre>
<p data-ke-size="size16">
<p data-ke-size="size16">
<div> &#8211; 소스파일을 cmd, 파워쉘 또는 vscode 등에서 아래와 같이 실행하시기 바랍니다.</div>
<div></div>
<p data-ke-size="size16">
<div> &gt; python 1.py</div>
<div>(실행파일(1.py)과 동일한 위치에 &#8220;chromedriver.exe&#8221;파일이 있어야 합니다.)</div>
<div></div>
<div></div>
<p data-ke-size="size16"> O 주요 내용</p>
<p data-ke-size="size16"> 1. 소스를 살펴보겠습니다.</p>
<p data-ke-size="size16"> 다른 부분은 이전 글의 소스와 모두 동일하므로 달라진 부분만 설명드리겠습니다.</p>
<p data-ke-size="size16">날짜 및 텔레그램 관련 모듈을 임포트 해주고, 메신저로 최저가 정보와 모든 티켓의 상세정보를 파일로 보낼 것이기 때문에 텔레그램 봇을 아래와 같이 설정해 줍니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 009.png" data-origin-width="842" data-origin-height="573"><span data-url="https://blog.kakaocdn.net/dn/bvl86d/btrYszpFS9f/j28Gko5hrT9JJRUiksM6Lk/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bvl86d/btrYszpFS9f/j28Gko5hrT9JJRUiksM6Lk/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvl86d%2FbtrYszpFS9f%2Fj28Gko5hrT9JJRUiksM6Lk%2Fimg.png" data-filename="이미지 009.png" data-origin-width="842" data-origin-height="573" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 54"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16"> 2. 날짜를 수기로 넣어주는 것이 아닌, 자동으로 계산하기 위하여 아래와 같은 코드로 자동계산 하도록 코딩합니다.</p>
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 010.png" data-origin-width="1089" data-origin-height="719"><span data-url="https://blog.kakaocdn.net/dn/MLuoq/btrYszb9kDa/3NTcJx8oDwgj9uRY9fyFy1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/MLuoq/btrYszb9kDa/3NTcJx8oDwgj9uRY9fyFy1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMLuoq%2FbtrYszb9kDa%2F3NTcJx8oDwgj9uRY9fyFy1%2Fimg.png" data-filename="이미지 010.png" data-origin-width="1089" data-origin-height="719" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 55"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">3. 2개월치 데이터를 수집할 것이므로 해당월의 주차수와 왼쪽/오른쪽 창을 구분하여 셀레니움이 클릭할 수 있도록 해주어야 합니다.</p>
<p data-ke-size="size16">아래와 같이 j변수는 주차 수를 나타내며, l변수는 가는날 창의 왼쪽(1), 오른쪽(2)을 나타내고, 구분할 수 있도록 설정해 줍니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1320" data-origin-height="568"><span data-url="https://blog.kakaocdn.net/dn/bfX1U2/btrYr9xSAnR/vEZ3vkmq9dvkoodwga1Sh0/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bfX1U2/btrYr9xSAnR/vEZ3vkmq9dvkoodwga1Sh0/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfX1U2%2FbtrYr9xSAnR%2FvEZ3vkmq9dvkoodwga1Sh0%2Fimg.png" data-origin-width="1320" data-origin-height="568" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 56"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16"> 4. 이전 글에서는 테스트로 티켓 10개만 돌렸으나, 여기서는 모든 티켓을 대상으로 수행해야 하므로 해당일자의 티켓 개수만큼 루프를 돌려줍니다.</p>
<p data-ke-size="size16"> <img decoding="async" src="https://blog.kakaocdn.net/dn/ciUC9F/btrYq3EUbkT/4Tn9ZP8nlyt7jkqwxuOLKK/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciUC9F%2FbtrYq3EUbkT%2F4Tn9ZP8nlyt7jkqwxuOLKK%2Fimg.png" data-filename="이미지 012.png" data-origin-width="1134" data-origin-height="369" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 57"></p>
<p data-ke-size="size16">5. 메신저에서 최저가 티켓의 세부정보를 표시해 주려면 최저가에 해당하는 &#8216;편도1인요금&#8217; 컬럼의 값을 숫자형으로 변경해 준 후 데이터프레임의 .loc()로 가져와야 합니다. 아래와 같이 표현해 줍니다.</p>
<p data-ke-size="size16">airline_ticket_df[&#8216;편도1인요금&#8217;] = pd.to_numeric(airline_ticket_df[&#8216;편도1인요금&#8217;])</p>
<p data-ke-size="size16">그리고 난 후 가져온 티켓 정보를 엑셀 파일로 저장 후 (라인 192~194)</p>
<p data-ke-size="size16">메신저로 최저가 정보와(라인 208)</p>
<p data-ke-size="size16">생성한 엑셀파일을 첨부로 보냅니다.(라인 212)</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="1440" data-origin-height="743"><span data-url="https://blog.kakaocdn.net/dn/niW7e/btrYtSPXHe2/P7CB9tIaDngbDmWU6LPJ2K/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/niW7e/btrYtSPXHe2/P7CB9tIaDngbDmWU6LPJ2K/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FniW7e%2FbtrYtSPXHe2%2FP7CB9tIaDngbDmWU6LPJ2K%2Fimg.png" data-origin-width="1440" data-origin-height="743" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 58"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p data-ke-size="size16">6. 마지막으로 2월이 끝나면(보통 4주차) 다시 3월의 첫번째 주가 시작되므로 주차를 표시하는 j변수가 4보다 크면 1로 초기화 시켜 줍니다.</p>
<p data-ke-size="size16">
<p data-ke-size="size16">그리고 오션의 티켓을 예매하는 화면이 좌(2월), 우(3월)로 구분되어 있으므로 셀레니움으로 클릭시 이를 구분해 주어야 합니다.</p>
<p data-ke-size="size16">그래서 l변수에 왼쪽 창을 1로, 오른쪽 창을 2로 구분해 주고, 다음월로 넘어갈때(즉, 위의 j변수가 4보다 클때) l변수를 2로 만들어 주었습니다.</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-filename="이미지 014.png" data-origin-width="1013" data-origin-height="380"><span data-url="https://blog.kakaocdn.net/dn/bLiOqo/btrYqvIOoCU/8Bla4isn784bWgbFSjchT1/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/bLiOqo/btrYqvIOoCU/8Bla4isn784bWgbFSjchT1/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLiOqo%2FbtrYqvIOoCU%2F8Bla4isn784bWgbFSjchT1%2Fimg.png" data-filename="이미지 014.png" data-origin-width="1013" data-origin-height="380" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 59"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
<p>&nbsp;</p>
<figure class="imageblock alignCenter" data-ke-mobilestyle="widthOrigin" data-origin-width="696" data-origin-height="331"><span data-url="https://blog.kakaocdn.net/dn/dMwFAQ/btrYtvUU7Ze/NBZdkNN2Mkd6d1hnxG5U41/img.png" data-lightbox="lightbox"><img decoding="async" src="https://blog.kakaocdn.net/dn/dMwFAQ/btrYtvUU7Ze/NBZdkNN2Mkd6d1hnxG5U41/img.png" srcset="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMwFAQ%2FbtrYtvUU7Ze%2FNBZdkNN2Mkd6d1hnxG5U41%2Fimg.png" data-origin-width="696" data-origin-height="331" alt="img" title="옥션 최저가 항공권 텔레그램 메세지 받기 파이썬 프로그램 60"></span></figure>
<p>&nbsp;</p>
<p data-ke-size="size16">
</div>
<!-- CONTENT END 4 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlQVyCahjVQc8KYtxZKaJGGEdigmfP9boR0R0b_fB6gDSEx-p3sYeIYc0bwjvbFe7p2neVRFZ22bNT9ggOv-KST-Quff5vXvlrHtnVEHnzOkMpmQhzxvmNCVP0QSBX6vZOq3p3gBrn8lhleMsVs9Y7G7Ol55MWg_ahhF3Yw6ZvOIzuA2pFtrnLQdattaRe/w400-h400/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF-%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-011.png" medium="image"></media:content>
            	</item>
		<item>
		<title>네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기</title>
		<link>https://2days.kr/18/10/00/7783/it/program/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Tue, 17 Oct 2023 15:28:55 +0000</pubDate>
				<category><![CDATA[program]]></category>
		<category><![CDATA[네이버]]></category>
		<category><![CDATA[네이버 뉴스 파이썬]]></category>
		<category><![CDATA[네이버 키워드 뉴스]]></category>
		<category><![CDATA[뉴스]]></category>
		<category><![CDATA[만들기]]></category>
		<category><![CDATA[무료 파이썬]]></category>
		<category><![CDATA[전송]]></category>
		<category><![CDATA[키워드]]></category>
		<category><![CDATA[텔레그램]]></category>
		<category><![CDATA[파이썬]]></category>
		<category><![CDATA[파이썬 프로그램]]></category>
		<category><![CDATA[프로그램]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7783</guid>

					<description><![CDATA[네이버 키워드 뉴스 프로젝트는 네이버 뉴스 탭에서 키워드 로 검색하여 최신 뉴스를 크롤링 하여 텔레그램 방에 정해진 시간에 자동으로 글이 받아 볼 수 있도록 만들 예정입니다.

사실 구글링해서 여러 페이지를 찾아 봤지만 몇가지 오류가 있는 코드도 있었고, 완벽하지 않는 것도 있어 혼란을 겪다가 제가 코드를 수정해서 만들었고 현재 기준으로는 매우 동작이 잘 되는 것을 확인하였습니다.]]></description>
										<content:encoded><![CDATA[<p>네이버 키워드 뉴스 프로젝트는 네이버 뉴스 탭에서 키워드 로 검색하여 최신 뉴스를 크롤링 하여 텔레그램 방에 정해진 시간에 자동으로 글이 받아 볼 수 있도록 만들 예정입니다.</p>
<p>사실 구글링해서 여러 페이지를 찾아 봤지만 몇가지 오류가 있는 코드도 있었고, 완벽하지 않는 것도 있어 혼란을 겪다가 제가 코드를 수정해서 만들었고 현재 기준으로는 매우 동작이 잘 되는 것을 확인하였습니다.</p>
<div class="separator">
<figure style="width: 400px" class="wp-caption aligncenter"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-eHlxKgALo4KwXIQdx-b1qY_bYl6nuI0jZgEaFwBqEnb9uCSEBiPuIpaMWVU5CI1rK5i0VP_Le4iLhCrl9eO84rP7eHjDrIexKlmW6XQZRGkd3XyARVVCrKFPGVHVkm7hiIMjjZPGLLyZJNuAgNq_8rL5HeVJ2TUxTgl8CB2X4uSybFqIASt5viFK5x-Q/s2560/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF%20%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-006.jpg" target="_blank" rel="noopener"><img post-id="7783" fifu-featured="1" decoding="async" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-eHlxKgALo4KwXIQdx-b1qY_bYl6nuI0jZgEaFwBqEnb9uCSEBiPuIpaMWVU5CI1rK5i0VP_Le4iLhCrl9eO84rP7eHjDrIexKlmW6XQZRGkd3XyARVVCrKFPGVHVkm7hiIMjjZPGLLyZJNuAgNq_8rL5HeVJ2TUxTgl8CB2X4uSybFqIASt5viFK5x-Q/w400-h400/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF%20%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-006.jpg" alt="네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기" title="네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기" width="400" height="400" border="0" data-original-height="2560" data-original-width="2560" title="네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기 61"></a><figcaption class="wp-caption-text">네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

</div>
<p>(2023년 10월 기준) 만약 계속 사용하다가 코드가 업데이트 되었거나 변수가 생기면 해당 포스팅에 업데이트 할 예정입니다. 별도의 글이 업데이트 되지 않았다면 특별한 문제가 확인 되지 않았다고 생각하시면 될 것 같습니다,</p>
<p>먼저 개발 환경은 파이참에서 몇가지 라이브러리를 활용하여 만들었습니다.</p>
<p>파이선에 대한 다른 포스팅을 보고 싶은 분들은 다음 포스팅을 읽어보세요</p>
<p><a href="https://2days.kr/15/10/23/7728/coding/" target="_blank" rel="noopener">블로그 키워드 생성 파이썬 코드 Python 마케팅 홍보 키워드에도 좋아요</a></p>
<p><a href="https://2days.kr/05/09/09/6136/%eb%af%b8-%eb%b6%84%eb%a5%98/" target="_blank" rel="noopener">부동산 파이썬 Python 크롤링 미분양 정보 가져오기 (1편)</a></p>
<h2><strong>라이브러리 &#8211; 네이버 키워드 뉴스 텔레그램</strong></h2>
<hr />
<p>사용 라이브러리는 아래와 같습니다.</p>
<p>일반적으로 모든 라이브러리 설치는 거의 비슷합니다. 만약에 라이브러리가 없다고 (대부분 module 에러로 표시 됩니다) 나오면 pip install 라이브러리 형태로 터미널에 입력하면 라이브러리가 자동으로 설치됩니다.</p>
<p><a href="https://www.jetbrains.com/ko-kr/" target="_blank" rel="noopener">파이참</a>을 다운 받지 않으신 분들은 파이참에 다운 받으시고, 비주얼스튜디오도 무방합니다.</p>
<div>
<div>requests<br />
BeautifulSoup<br />
telegram<br />
asyncio<br />
time</div>
</div>
<h2><strong>개요 &#8211; 네이버 키워드 뉴스 텔레그램</strong></h2>
<hr />
<p>코드는 네이버 검색 창에서 검색어 (query)가 정의 되면 뉴스를 최신 순서로 정렬 후 검색어에 해당하는 뉴스를 크롤링하여 본인이 만든 텔레그램 봇을 활용하여 정해진 타임에 따라 스크롤링 글을 자동으로 등록하는 것입니다. 매우 유용하겠지요?</p>
<p>예를 들어, 부동산을 검색어로 정했을 때 부동산 뉴스를 정해진 시간에 따라 크롤링 한 후에 텔레그램 방에 업데이트 시키는 것입니다.</p>
<p>텔레그램 봇을 설정하는 방법과 토큰을 확보하는 방법은 아래 포스트에서 확인하세요. 만약에 텔레그램 봇을 설정하셨거나 토큰 번호를 이미 알고 계신 분들은 패스 하셔도 좋습니다.</p>
<h2>
<strong>세부 코드 (coding) &#8211; 네이버 키워드 뉴스 텔레그램</strong></h2>
<div>
<hr />
</div>
<div></div>
<div>
<div>위와 같이 부동산 관련 주제로 검색어 (쿼리값을)를 입력했을 때 자동으로 글이 올라오는 것을 보실 수 있습니다.  자 그럼 코드 하나하나 작성해보도록 하겠습니다.</div>
<div></div>
</div>
<div class="separator">
<figure style="width: 389px" class="wp-caption aligncenter"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEGEGgDnsrhM9YJ9lqPmYyKvOiYnOYlJXKOeCr5KXDgMjDt-iLgYEDqOu7P2O2-S_zd-6v_es4AaLvC9Y8B9wcZfdk6UVCHv7jhJwZRQCEUU8yvJ0STzqmGFngqLhjmksBEJFT4PNwuRMLYaH4a1c2EktdLeegV5Gfxkgm961CHa8UlJ07A2hPHcyvZc_/s1440/%E1%84%90%E1%85%AE%E1%84%83%E1%85%A6%E1%84%8B%E1%85%B5%E1%84%8C%E1%85%B3.jpeg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="" title="네이버 키워드 뉴스 텔레그램" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpEGEGgDnsrhM9YJ9lqPmYyKvOiYnOYlJXKOeCr5KXDgMjDt-iLgYEDqOu7P2O2-S_zd-6v_es4AaLvC9Y8B9wcZfdk6UVCHv7jhJwZRQCEUU8yvJ0STzqmGFngqLhjmksBEJFT4PNwuRMLYaH4a1c2EktdLeegV5Gfxkgm961CHa8UlJ07A2hPHcyvZc_/w310-h640/%E1%84%90%E1%85%AE%E1%84%83%E1%85%A6%E1%84%8B%E1%85%B5%E1%84%8C%E1%85%B3.jpeg" alt="네이버 키워드 뉴스 텔레그램" width="389" height="802" border="0" data-original-height="1440" data-original-width="699" /></a><figcaption class="wp-caption-text">네이버 키워드 뉴스 텔레그램</figcaption></figure>
</div>
<div>
<ol>
<li>모듈 및 패키지 가져오기:</li>
</ol>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">import requests
from bs4 import BeautifulSoup as bs
import telegram
import asyncio
import time</pre>
<ul>
<li><code>requests</code>: 웹 페이지에서 데이터를 가져오기 위한 모듈입니다.</li>
<li><code>BeautifulSoup</code>: 웹 페이지에서 데이터를 파싱하기 위한 패키지입니다.</li>
<li><code>telegram</code>: 텔레그램 봇과 통신하기 위한 패키지입니다.</li>
<li><code>asyncio</code>: 비동기 작업을 처리하기 위한 모듈입니다.</li>
<li><code>time</code>: 시간 지연을 위한 모듈입니다.</li>
</ul>
<ol start="2">
<li>사용할 변수 정의:</li>
</ol>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">old_links = []
bot = None
chat_id = ''  # 채팅 ID를 여기에 입력하세요.</pre>
<p>&nbsp;</p>
<ul>
<li><code>old_links</code>: 이전에 전송한 뉴스 링크를 저장하는 리스트입니다.</li>
<li><code>bot</code>: 텔레그램 봇을 초기화하기 위한 변수입니다.</li>
<li><code>chat_id</code>: 메시지를 전송할 채팅 ID를 지정합니다.</li>
</ul>
<ol start="3">
<li>검색어 입력 받기:</li>
</ol>
<div class="bg-black rounded-md mb-4">
<div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-python">query = <span class="hljs-built_in">input</span>(<span class="hljs-string">'주제: '</span>)<br />
</code></div>
</div>
<ul>
<li>사용자로부터 검색할 주제를 입력받습니다.</li>
</ul>
<ol start="4">
<li><code>get_new_links</code> 함수 정의:</li>
</ol>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">async def get_new_links():
    url = f'https://search.naver.com/search.naver?where=news&amp;query={query}&amp;sm=tab_opt&amp;sort=1&amp;photo=0&amp;field=0&amp;pd=0&amp;ds=&amp;de=&amp;docid=&amp;related=0&amp;mynews=0&amp;office_type=0&amp;office_section_code=0&amp;news_office_checked=&amp;no=so%3Add%2Cp%3Aall&amp;is_sug_officeid=0'

    response = requests.get(url)
    soup = bs(response.text, 'html.parser')

    news_titles = soup.select('a.news_tit')
    list_links = [i.attrs['href'] for i in news_titles]

    new_links = [link for link in list_links if link not in old_links]

    return new_links</pre>
<p>&nbsp;</p>
<ul>
<li><code>get_new_links</code> 함수는 입력받은 검색어(<code>query</code>)에 대한 네이버 뉴스 검색 결과를 크롤링하여 새로운 링크 목록을 반환합니다.</li>
</ul>
<ol start="5">
<li><code>send_links</code> 함수 정의:<code><code></code></code></li>
</ol>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">async def send_links(): global old_links, bot new_links = await get_new_links() if new_links: for link in new_links await bot.sendMessage(chat_id=chat_id, text=link) time.sleep(3) # 메시지 간에 3초의 지연을 추가 else: pas</pre>
<p><code><code></code></code></p>
<p><code>send_links</code> 함수는 <code>get_new_links</code> 함수를 통해 얻은 새로운 링크 목록을 텔레그램으로 전송합니다. 메시지를 전송할 때 메시지 간에 3초의 지연을 추가하여 Flood Control 예외를 피합니다.</p>
<ol start="6">
<li><code>main</code> 함수 정의</li>
</ol>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">global bot bot_token = '' # 본인의 봇 토큰으로 대체하세요. bot = telegram.Bot(token=bot_token) await bot.sendMessage(chat_id=chat_id, text=f"{query}를 주제로 뉴스 기사 크롤링이 시작되었습니다") while True: await send_links() await asyncio.sleep(30)</pre>
<div class="bg-black rounded-md mb-4"></div>
<ol start="7">
<li>코드 실행:</li>
</ol>
<div class="bg-black rounded-md mb-4">
<div class="flex items-center relative text-gray-200 bg-gray-800 gizmo:dark:bg-token-surface-primary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<pre class="EnlighterJSRAW" data-enlighter-language="generic">if __name__ == '__main__': asyncio.run(main())</pre>
<p>&nbsp;</p>
</div>
</div>
<ul>
<li>코드를 실행하면 사용자로부터 주제를 입력받아 해당 주제에 대한 뉴스 링크를 주기적으로 수집하고 텔레그램으로 전송합니다.</li>
</ul>
<p>이렇게 코드를 단계별로 설명했습니다. 원하는 주제를 입력하고 실행하면 됩니다.</p>
</div>
<div>
<h2><strong>전체 코드 &#8211; 네이버 키워드 뉴스 텔레그램</strong></h2>
<hr />
<div>전체 완성 코드는 아래와 같습니다. 전체 코드를 복사하여 붙혀넣기 하여 사용하셔도 되지만, 나중에 수정, 변경하시면서 사용하시려면 세부 코드를 보면서 보는 것이 좋을 것입니다.</div>
</div>
<div></div>
<div>
<div>또, 텔레그램 봇에 대한 정보는 꼭 넣으셔야 작동이 되는 것도 참고 하시구요!</div>
<div>(급하셔서 글을 내리셨다면 다시 위로 올리셔서 보시면 나옵니다)</div>
<pre class="EnlighterJSRAW" data-enlighter-language="python">import requests
from bs4 import BeautifulSoup as bs
import telegram
import asyncio
import time

old_links = []
bot = None
chat_id = ''  # 채팅 ID를 여기에 입력하세요.

# 검색어를 코드 내에서 미리 정의
query = input('주제: ')

async def get_new_links():
    url = f'https://search.naver.com/search.naver?where=news&amp;query={query}&amp;sm=tab_opt&amp;sort=1&amp;photo=0&amp;field=0&amp;pd=0&amp;ds=&amp;de=&amp;docid=&amp;related=0&amp;mynews=0&amp;office_type=0&amp;office_section_code=0&amp;news_office_checked=&amp;ns=so%3Add%2Cp%3Aall&amp;is_sug_officeid=0'

    response = requests.get(url)
    soup = bs(response.text, 'html.parser')

    news_titles = soup.select('a.news_tit')
    list_links = [i.attrs['href'] for i in news_titles]

    new_links = [link for link in list_links if link not in old_links]

    return new_links

async def send_links():
    global old_links, bot
    new_links = await get_new_links()

    if new_links:
        for link in new_links
            await bot.sendMessage(chat_id=chat_id, text=link)
            time.sleep(3)  # 메시지 간에 3초의 지연을 추가
    else:
        pass

async def main():
    global bot
    bot_token = ''  # 본인의 봇 토큰으로 대체하세요.
    bot = telegram.Bot(token=bot_token)

    await bot.sendMessage(chat_id=chat_id, text=f"{query}를 주제로 뉴스 기사 크롤링이 시작되었습니다")

    while True:
        await send_links()
        await asyncio.sleep(30)

if __name__ == '__main__':
    asyncio.run(main())

</pre>
<p>&nbsp;</p>
<h2><strong>EXE 파일 만들기 &#8211; 네이버 키워드 뉴스 텔레그램</strong></h2>
<hr />
<div>이제 이 파일을 EXE로 만들어서 공유할 수 있도록 해보겠습니다.</div>
<div></div>
<div>
<p>Python 스크립트를 실행 가능한 .exe 파일로 변환하려면 <code>pyinstaller</code>와 같은 패키지를 사용할 수 있습니다. 아래는 파이썬 스크립트를 .exe 파일로 변환하는 단계입니다:</p>
<ol>
<li><strong>PyInstaller 설치</strong>: 먼저, <code>pyinstaller</code>를 설치해야 합니다. 명령 프롬프트나 터미널에서 다음 명령어를 실행하여 설치합니다
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pip install pyinstaller
</pre>
<p>&nbsp;</li>
<li><strong>스크립트 변환</strong>: 다음으로, 파이썬 스크립트를 .exe 파일로 변환합니다. 명령 프롬프트나 터미널에서 스크립트가 있는 디렉토리로 이동한 후 다음 명령어를 실행합니다:
<div class="bg-black rounded-md mb-4">
<div class="flex items-center relative text-gray-200 bg-gray-800 gizmo:dark:bg-token-surface-primary px-4 py-2 text-xs font-sans justify-between rounded-t-md">
<pre class="EnlighterJSRAW" data-enlighter-language="generic">pyinstaller --onefile your_script.py</pre>
<p><span style="font-family: Verdana, BlinkMacSystemFont, -apple-system, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;">여기서 </span><code>your_script.py</code><span style="font-family: Verdana, BlinkMacSystemFont, -apple-system, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;">는 변환하려는 파이썬 스크립트의 이름입니다. </span></p>
</div>
</div>
</li>
<li><strong>빌드 디렉토리</strong>: 변환 프로세스가 완료되면 <code>dist</code> 디렉토리가 생성됩니다. 이 디렉토리 안에 실행 가능한 .exe 파일이 생성됩니다. 이 파일을 실행하여 스크립트를 실행할 수 있습니다.</li>
</ol>
<p>이렇게 하면 파이썬 스크립트를 .exe 파일로 변환할 수 있습니다. 변환된 .exe 파일을 실행하면 스크립트를 실행할 수 있습니다.</p>
</div>
<h2><strong>EXE 파일 공유 &#8211; 네이버 키워드 뉴스 텔레그램</strong></h2>
<hr />
<div>EXE파일은 투데이즈에서 운영하는 화수분 (https://www.whasubun.com)에 가시면 무료 다운 가능하십니다. 화수분에서는 무료 파이선 프로그램을 계속 만들어서 공유드릴 예정이니 가입하시면 많은 도움이 되실 것입니다.</p>
</div>
<div>
<figure id="attachment_7418" aria-describedby="caption-attachment-7418" style="width: 272px" class="wp-caption aligncenter"><a href="https://www.whasubun.com" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-7418 size-full" src="https://2days.kr/wp-content/uploads/2023/10/logo.png" alt="화수분 네이버 뉴스 크롤링 텔레그램 자료 받기" width="272" height="90" title="네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기 62" srcset="https://2days.kr/wp-content/uploads/2023/10/logo.png 272w, https://2days.kr/wp-content/uploads/2023/10/logo-150x50.png 150w" sizes="(max-width: 272px) 100vw, 272px" /></a><figcaption id="caption-attachment-7418" class="wp-caption-text">화수분 네이버 뉴스 크롤링 텔레그램 자료 받기</figcaption></figure>
</div>
<div>코드에 대한 질문이나 도움이 필요하시면 아래 투데이즈 텔레그램 방에 입장하셔서 물어 보시면 최대한 성심성의껏 답변 드리도록 하겠습니다.</div>
<div style="text-align: center;"><a href="https://t.me/+1b18MIkdkoM2NGM1"><img loading="lazy" decoding="async" class="aligncenter wp-image-7786 size-thumbnail" src="https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-150x150.png" alt="투데이즈" width="150" height="150" title="네이버 키워드 뉴스 텔레그램 전송 파이썬 프로그램 만들기 63" srcset="https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-150x150.png 150w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-300x300.png 300w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-1024x1024.png 1024w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-768x768.png 768w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-1536x1536.png 1536w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-2048x2048.png 2048w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-696x696.png 696w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-1068x1068.png 1068w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-1920x1920.png 1920w, https://2days.kr/wp-content/uploads/2023/10/제목을-입력해주세요_-007-420x420.png 420w" sizes="(max-width: 150px) 100vw, 150px" />https://t.me/+1b18MIkdkoM2NGM1</a></div>
</div>
<!-- CONTENT END 5 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-eHlxKgALo4KwXIQdx-b1qY_bYl6nuI0jZgEaFwBqEnb9uCSEBiPuIpaMWVU5CI1rK5i0VP_Le4iLhCrl9eO84rP7eHjDrIexKlmW6XQZRGkd3XyARVVCrKFPGVHVkm7hiIMjjZPGLLyZJNuAgNq_8rL5HeVJ2TUxTgl8CB2X4uSybFqIASt5viFK5x-Q/w400-h400/%E1%84%8C%E1%85%A6%E1%84%86%E1%85%A9%E1%86%A8%E1%84%8B%E1%85%B3%E1%86%AF%20%E1%84%8B%E1%85%B5%E1%86%B8%E1%84%85%E1%85%A7%E1%86%A8%E1%84%92%E1%85%A2%E1%84%8C%E1%85%AE%E1%84%89%E1%85%A6%E1%84%8B%E1%85%AD_-006.jpg" medium="image"></media:content>
            	</item>
		<item>
		<title>챗GPT 블로그 자동 포스팅 프로그램 무료 배포 (ft.30초 포스팅)</title>
		<link>https://2days.kr/09/10/09/7504/contents/blog/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Mon, 09 Oct 2023 00:01:17 +0000</pubDate>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[워드프레스]]></category>
		<category><![CDATA[워드프레스 글 작성]]></category>
		<category><![CDATA[자동 포스팅]]></category>
		<category><![CDATA[자동화]]></category>
		<category><![CDATA[프로그램]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7504</guid>

					<description><![CDATA[오늘은 자동 프로그램을 무료로 배포해 드리며 여러분도 자동 포스팅을 통해 큰 수익을 얻어보세요.]]></description>
										<content:encoded><![CDATA[
<p>요즘 블로그 글을 보면 챗GPT를 이용하여 작성된 글을 자주 볼 수 있어요.</p>



<p>자동 포스팅을 통해 큰 수익을 벌고 있는 분들이 많은데요.</p>



<p>다만, 블로그를 하는 대부분의 독자분들은 부업 정도로 생각하기 때문에 프로그램을 구매하지 않아요.</p>



<p>저도 자동 포스팅 프로그램을 찾아봤지만 금액을 보고 놀랐어요.</p>



<p>저 정도 금액을 받을만한 프로그램이 아니란 걸 알기 때문이에요.</p>



<p>오늘은 자동 프로그램을 무료로 배포해 드리며 여러분도 자동 포스팅을 통해 큰 수익을 얻어보세요.</p>



<h3 class="wp-block-heading">블로그 자동 포스팅 프로그램 다운로드</h3>



<p>아래의 링크를 클릭해서 프로그램을 무료로 다운로드 받으세요.</p>



<div class="wp-block-file"><a href="file:///private/var/mobile/Containers/Data/Application/4CE4DF24-A1EA-4DAE-A672-7A78D8932A78/tmp/com.automattic.jetpack-Inbox/%E1%84%8E%E1%85%A2%E1%86%BAGPT_%E1%84%86%E1%85%AE%E1%84%85%E1%85%AD_%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.txt">챗GPT_무료_프로그램.txt</a><a href="file:///private/var/mobile/Containers/Data/Application/4CE4DF24-A1EA-4DAE-A672-7A78D8932A78/tmp/com.automattic.jetpack-Inbox/%E1%84%8E%E1%85%A2%E1%86%BAGPT_%E1%84%86%E1%85%AE%E1%84%85%E1%85%AD_%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%86%B7.txt" class="wp-block-file__button wp-element-button" download>다운로드</a></div>



<h3 class="wp-block-heading">블로그 자동 포스팅 프로그램 사용 방법</h3>



<figure class="wp-block-image"><img post-id="7504" fifu-featured="1" decoding="async" src="https://blog.kakaocdn.net/dn/boYZLD/btsxrjT0NN5/UNs9KbNSXuLyX6VIo9RZe1/img.png" alt="챗GPT 블로그 자동 포스팅 프로그램 무료 배포 (ft.30초 포스팅)" title="챗GPT 블로그 자동 포스팅 프로그램 무료 배포 (ft.30초 포스팅)" title="챗GPT 블로그 자동 포스팅 프로그램 무료 배포 (ft.30초 포스팅) 64"><figcaption class="wp-element-caption">블로그 자동 포스팅 프로그램 사용 방법</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>




<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/bN8OQN/btsxgqNZ1uA/KuULxIso5xtTTfvJBksYEK/img.png" alt="블로그 자동 포스팅 프로그램 사용 방법" title="챗GPT 블로그 자동 포스팅 프로그램 무료 배포 (ft.30초 포스팅) 65"><figcaption class="wp-element-caption">블로그 자동 포스팅 프로그램 사용 방법</figcaption></figure>



<ol class="wp-block-list">
<li><a href="https://chat.openai.com/" target="_blank" rel="noreferrer noopener">챗GPT</a> 사이트를 접속하고 로그인합니다.</li>



<li>다운로드한 프로그램 내용을&nbsp;<a href="https://chat.openai.com/" target="_blank" rel="noreferrer noopener">챗GPT</a>로 붙여넣기 합니다.</li>



<li>&#8216;사과&#8217;라고 적힌 부분에 자동으로 포스팅하기 원하는 내용을 입력합니다.</li>



<li>완성된 글을 사용하는 블로그에서 글쓰기를 접속합니다.</li>



<li>HTML 모드로 변경 후 붙여넣기 합니다.</li>



<li>30초에 1개씩 글 발행이 가능합니다.</li>
</ol>



<h3 class="wp-block-heading">마치며</h3>



<p>오늘은 챗GPT 자동 프로그램을 무료로 배포해 드렸는데요.</p>



<p>사용 방법도 간단하고 수십만원 혹은 백만원이 넘는 말도 안 되는 프로그램은 구매할 필요가 없어졌어요.</p>



<p>자동 포스팅 프로그램을 사용하는 것도 좋지만 추천드리는 방식은 자동 포스팅을 하고 기계가 작성한 듯한 느낌을 주는 부분은 반드시 수정하는 것을 권장 드려요.</p>



<p>만약 워드프레스를 통해 블로그를 운영하고 싶은 경우이지만 아직 워드프레스 개설을 안 했다면 워드프레스 가입 방법 글도 함께 참고해 보시길 바랍니다.</p>


<form role="search" method="get" action="https://2days.kr/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search"    ><label class="wp-block-search__label" for="wp-block-search__input-1" >검색</label><div class="wp-block-search__inside-wrapper " ><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required /><button aria-label="검색" class="wp-block-search__button wp-element-button" type="submit" >검색</button></div></form>


<p></p>
<!-- CONTENT END 6 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blog.kakaocdn.net/dn/boYZLD/btsxrjT0NN5/UNs9KbNSXuLyX6VIo9RZe1/img.png" medium="image"></media:content>
            	</item>
		<item>
		<title>s 메모 정말 간단한 다운로드</title>
		<link>https://2days.kr/06/10/19/7389/aboda/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Fri, 06 Oct 2023 10:27:17 +0000</pubDate>
				<category><![CDATA[Aboda]]></category>
		<category><![CDATA[s메모]]></category>
		<category><![CDATA[메모]]></category>
		<category><![CDATA[무료]]></category>
		<category><![CDATA[프로그램]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7389</guid>

					<description><![CDATA[s 메모는 간단한 메모부터 중요한 스케줄을 정리할 때 사용하기 좋은 프로그램으로 용량제한이 없어 무제한 무료로 사용할 수 있습니다.]]></description>
										<content:encoded><![CDATA[
<p>s&nbsp;메모는&nbsp;</p>



<p>간단한 메모부터 중요한 스케줄을 정리할 때 사용하기 좋은 프로그램으로 용량제한이 없어 무제한 무료로 사용할 수 있습니다.</p>



<figure class="wp-block-image"><img post-id="7389" fifu-featured="1" decoding="async" src="https://blog.kakaocdn.net/dn/cexSbB/btsl1Vj5j0d/bpVh3jlNKtKSBhgaD4wvRk/img.jpg" alt="s 메모 정말 간단한 다운로드" title="s 메모 정말 간단한 다운로드" title="s 메모 정말 간단한 다운로드 66"></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>




<h4 class="wp-block-heading">1. s&nbsp;메모 다운로드 및 설치 방법</h4>



<p>누구나 다운 받을 수 있는 에스메모는 무료입니다.&nbsp;</p>



<p>pc&nbsp;앱 구글플레이 모두 다운로드가 가능합니다.&nbsp;다운로드한 설치파일을 누르면 자동으로 세팅이 되고 노란색 네모 아이콘을 클릭하면 활성화됩니다.</p>



<p>s메모의 주요 기능으로는 메모,&nbsp;스케쥴,&nbsp;화면캡쳐,&nbsp;위젯,&nbsp;백업과 복원,&nbsp;시스템 예약 종료 색상 추출 등의 기능이 있습니다.&nbsp;</p>



<p>본 프로그램은 에스메모 홈페이지를 통해서 무료로 설치가 가능하기 때문에</p>



<p>메모를 습관화 하고 싶으신 분들,&nbsp;혹은 평소 메모를 자주 하시는 분들은</p>



<p>꼭 한번 이용해보세요.</p>



<p><a href="http://www.smemo.co.kr/web/index" target="_blank" rel="noopener">http://www.smemo.co.kr/web/index</a></p>



<figure class="wp-block-image"><a href="http://www.smemo.co.kr/web/index" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/W2aDL/btsl6Ml91D5/UOHihfT572yuCcgvoHAEVk/img.png" alt="s 메모 간단한 다운로드" title="s 메모 정말 간단한 다운로드 67"></a></figure>



<h4 class="wp-block-heading">2. s&nbsp;메모 특징</h4>



<p>s메모는 동기화가 잘된다는 장점 외에도 여러 장점이 있습니다.</p>



<p>1)&nbsp;메모관리가 쉽습니다.&nbsp;중요한 메모를 색상처리할수 있고 폴더별로 잘 정리가됩니다.</p>



<p>2)&nbsp;스케쥴 윈도우와 캘린더를 사용할 수 있습니다.</p>



<p>3)&nbsp;화면 캡쳐 기능도 있습니다.</p>



<p>4)&nbsp;위젯도 사용할수 있습니다.</p>



<p>5)&nbsp;백업과 복원기능이 잘 되어 있습니다.&nbsp;이는 클라우드기 때문입니다.&nbsp;</p>



<h4 class="wp-block-heading">3. 주요기능</h4>



<p>1.&nbsp;중요 메모,&nbsp;색상,&nbsp;폴더별로 손쉽게 정리하고 한 눈에 확인할 수 있고 하루 일정을 보여주는 스케줄 윈도우와 캘린더를 사용하면 효율적인 일정 관리를 할 수 있습니다.</p>



<p>2.&nbsp;원도우 화면을 캡쳐해서 메모 및 이미지로 저장 할 수 있으며 시계,&nbsp;날씨,&nbsp;캘린더 등 다양한 위젯을 편리하게 사용합니다.</p>



<p>3.&nbsp;최신 버전에서는 메모 작성시 자동백업으로 소중한 자료를 보다 안전하게 보호하며 시스템 예약 종료,&nbsp;색상 추출등 각종 편리한 기능을 사용합니다.</p>



<figure class="wp-block-image"><a href="http://www.smemo.co.kr/web/index" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/813Ed/btsl1z2GUAl/KCw0r6GT80VdkjBDIKXOq1/img.jpg" alt="s 메모 간단한 다운로드" title="s 메모 정말 간단한 다운로드 68"></a></figure>



<figure class="wp-block-image"><a href="http://www.smemo.co.kr/web/index" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/bOdfEL/btsmiEU0y5p/vtXxyioWGRZbJ5eeXotkv1/img.png" alt="s 메모 간단한 다운로드" title="s 메모 정말 간단한 다운로드 69"></a></figure>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/cgwIgc/btsl6VcrZB4/VxwNvwim8tcFqvz3FpqAk1/img.jpg" alt="s 메모 간단한 다운로드" title="s 메모 정말 간단한 다운로드 70"></figure>



<h4 class="wp-block-heading">4. 자주묻는 질문</h4>



<p>1) .메모 정렬하는 방법</p>



<p>-컴퓨터 오른쪽 하단에 날짜 있는 트레이 아이콘에&nbsp;︽표시(숨겨진아이콘)를 왼쪽클릭하세요.</p>



<p>-노란&nbsp;smemo네모 모양에 오른쪽마우스를 클릭하세요.</p>



<p>-그러면 회색 매뉴얼 박스 위에서&nbsp;8번째에&nbsp;“정렬”&nbsp;메뉴에 마우스를 가져갑니다.</p>



<p>-원하는 정렬방식을 찾아 정렬하시면 됩니다.</p>



<p>2) SMEMO&nbsp;단축키 모음</p>



<p>-환경 설정 단축키&nbsp;: Ctrl+Alt+F9</p>



<p>-모든 위젯 보기&nbsp;: Ctrl+Alt+Home</p>



<p>-최근 메모 보기&nbsp;: Ctrl+Alt+O</p>



<p>-일정 관리 단축기&nbsp;: Ctrl+Alt+F11</p>



<p>-클립보드 캡쳐 메모&nbsp;: Ctrl+Alt+V</p>



<p>-모든 위젯 숨기기&nbsp;: Ctrl+Alt+End</p>



<p>-메모 검색&nbsp;: Ctrl+Alt+F</p>



<p>-바탕화면 보기&nbsp;: Ctrl+Alt+D</p>



<p>-비밀번호 관리&nbsp;: Ctrl+Alt+L</p>



<p>-프로그램 종료&nbsp;: Ctrl+Alt+Q</p>



<p>-화면캡쳐&nbsp;: Ctrl+Alt+P</p>



<p>-화면캡쳐취소&nbsp;: Esc</p>



<p>S메모는 위젯 공유 기능 설정도 가능하며</p>



<p>스마트폰, PC&nbsp;연동이 가능하기 때문에 어디서나 편리하게 이용할 수 있다는 장점이 있습니다.</p>



<p>모든 서류를 사용자에 맞게 지정할 수 있습니다.</p>



<p>오늘은&nbsp;S메모 프로그램에 대해서 추천을 드렸습니다.</p>



<p>관심있으신 분들은 홈페이지에 접속해 보시고사용해 보세요</p>
<!-- CONTENT END 7 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blog.kakaocdn.net/dn/cexSbB/btsl1Vj5j0d/bpVh3jlNKtKSBhgaD4wvRk/img.jpg" medium="image"></media:content>
            	</item>
		<item>
		<title>동영상 해상도 줄이기 간단 방법</title>
		<link>https://2days.kr/06/10/18/7335/aboda/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Fri, 06 Oct 2023 09:29:37 +0000</pubDate>
				<category><![CDATA[Aboda]]></category>
		<category><![CDATA[동영상]]></category>
		<category><![CDATA[동영상 해상도]]></category>
		<category><![CDATA[조절]]></category>
		<category><![CDATA[줄이기]]></category>
		<category><![CDATA[프로그램]]></category>
		<category><![CDATA[해상도]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7335</guid>

					<description><![CDATA[우리가 영상물을 시청할 때 기본적으로 화면 비율과 픽셀 크기 등으로 인해서 화질이 달라지게 됩니다. 영상 화질에 민감하신 분들은 동영상 해상도 변경 프로그램을 통해서 이 부분을 바꾸실 수 있습니다.
오늘은 동영상 해상도에 대해 알아보겠습니다 :)]]></description>
										<content:encoded><![CDATA[
<p>우리가 영상물을 시청할 때 기본적으로 화면 비율과 픽셀 크기 등으로 인해서 화질이 달라지게 됩니다.&nbsp;영상 화질에 민감하신 분들은 동영상 해상도 변경 프로그램을 통해서 이 부분을 바꾸실 수 있습니다.&nbsp;</p>



<p>오늘은&nbsp;동영상 해상도에 대해 알아보겠습니다 🙂&nbsp;</p>



<figure class="wp-block-image"><img post-id="7335" fifu-featured="1" decoding="async" src="https://blog.kakaocdn.net/dn/bDgjk0/btsoz8G7tzz/QFXSxoGkxE9RmkyB3Sn0Rk/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 71"></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>




<h2 class="wp-block-heading">&nbsp;</h2>



<h2 class="wp-block-heading"><strong>동영상 해상도란?&nbsp;</strong></h2>



<p>동영상 해상도는 화면에 표시되는 픽셀 수를 의미합니다.&nbsp;보통 가로 픽셀 수와 세로 픽셀 수를 조합해 표현합니다.&nbsp;예를 들어, 1920&#215;1080&nbsp;해상도는 화면 가로에는&nbsp;1920개,&nbsp;세로에는&nbsp;1080개의 픽셀이 있다는 것을 의미합니다.</p>



<p>해상도가 높을수록 영상은 더욱 선명해집니다.&nbsp;그러나 높은 해상도의 동영상은 더 많은 데이터를 사용하므로,&nbsp;파일 크기가 커지고 인터넷 스트리밍시에는 더 많은 대역폭이 필요합니다.</p>



<p>다음은 몇 가지 일반적인 동영상 해상도입니다:</p>



<p>480p (Standard Definition, SD): 640&#215;480</p>



<p>720p (High Definition, HD): 1280&#215;720</p>



<p>1080p (Full High Definition, FHD): 1920&#215;1080</p>



<p>1440p (2K, Quad HD, QHD): 2560&#215;1440</p>



<p>2160p (4K, Ultra High Definition, UHD): 3840&#215;2160</p>



<p>4320p (8K, Full Ultra High Definition, FUHD): 7680&#215;4320</p>



<p>4K나&nbsp;8K와 같은 울트라 고해상도 동영상은 더 선명하고 더 자세한 이미지를 제공하지만,&nbsp;</p>



<p>그만큼 더 많은 저장 공간과 더 높은 재생 성능이 필요합니다.&nbsp;</p>



<p>따라서 이러한 고해상도 동영상을 사용하려면,&nbsp;이러한 요구 사항을 충족하는 하드웨어가 필요합니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/c6wcp5/btsoxFeUx9B/6Kkk5KMhUxP0RhEmmaBOyk/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 72"></figure>



<h2 class="wp-block-heading">&nbsp;</h2>



<h2 class="wp-block-heading"><strong>동영상 해상도를 줄이는 주요 이유</strong></h2>



<p><strong>1.&nbsp;데이터 사용량 감소</strong>:&nbsp;인터넷을 통해 동영상을 스트리밍 하거나 다운로드할 때,&nbsp;해상도가 높을수록 더 많은 데이터가 필요합니다.&nbsp;데이터 제한이 있는 경우나 모바일 데이터를 사용하는 경우,&nbsp;해상도를 낮추면 데이터 사용량을 줄일 수 있습니다.</p>



<p><strong>2.&nbsp;재생 성능 개선</strong>:&nbsp;높은 해상도의 동영상은 많은 컴퓨팅 자원을 필요로 합니다.&nbsp;일부 기기는&nbsp;4K&nbsp;또는 그 이상의 해상도를 재생하기 어려울 수 있습니다.&nbsp;따라서 해상도를 낮추면 이러한 기기에서 동영상을 재생하는 데 필요한 자원을 줄일 수 있습니다.</p>



<p><strong>3.&nbsp;파일 크기 감소</strong>:&nbsp;해상도가 높을수록 파일 크기가 커집니다.&nbsp;이러한 큰 파일은 저장 공간을 많이 차지하며,&nbsp;전송이나 업로드에 오랜 시간이 걸릴 수 있습니다.&nbsp;따라서 해상도를 줄이면 파일 크기를 줄일 수 있으며,&nbsp;이는 저장 공간의 효율적인 사용과 빠른 파일 전송에 도움이 됩니다.</p>



<p>그러나 해상도를 줄이면 동영상의 세부 정보와 이미지의 선명도가 손실될 수 있으므로,&nbsp;이러한 변화가 허용되는 상황에서만 해상도를 줄여야 합니다.</p>



<h2 class="wp-block-heading"><strong>동영상 해상도를 줄이는 데 사용할 수 있는 무료 도구</strong></h2>



<p><strong>1. HandBrake</strong>:&nbsp;이 소프트웨어는 동영상 해상도를 줄이는 데 매우 유용한 무료,&nbsp;오픈소스 도구입니다.&nbsp;다양한 포맷의 동영상 파일을 지원하며,&nbsp;사용자가 원하는 해상도로 동영상을 조정할 수 있습니다.&nbsp;여기에서 다운로드 받을 수 있습니다.</p>



<p><strong>2. VLC Media Player</strong>: VLC는 매우 인기 있는 무료 동영상 플레이어이며,&nbsp;동영상 변환 및 해상도 조정 기능도 제공합니다.&nbsp;사용자가 자신의 필요에 맞게 동영상의 해상도를 조정할 수 있게 해주는 이 기능은 매우 유용합니다.&nbsp;여기에서 다운로드 받을 수 있습니다.</p>



<p><strong>3. Shotcut</strong>: Shotcut은 무료,&nbsp;오픈소스 동영상 편집 소프트웨어로,&nbsp;동영상 해상도를 조정하는 기능을 제공합니다.&nbsp;다양한 포맷과 해상도를 지원하며,&nbsp;사용자가 자신의 필요에 따라 동영상을 편집하고 해상도를 조정할 수 있게 해 줍니다.. 여기에서 다운로드할 수 있습니다.</p>



<p>위의 도구들은 각각의 공식 웹사이트에서 직접 다운로드할 수 있습니다.&nbsp;어떤 도구를 선택할지는 사용자의 개인적인 필요와 선호에 따라 다릅니다.&nbsp;각 도구에는 해당 도구를 사용하여 동영상 해상도를 조정하는 방법에 대한 안내가 있으니,&nbsp;해당 사항을 확인하시기 바랍니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/djp8wD/btsoIOgCG17/kn3aL3aYnMNXKXK7hwE8Qk/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 73"></figure>



<h2 class="wp-block-heading">&nbsp;</h2>



<h2 class="wp-block-heading"><strong>동영상 해상도를 줄이는 방법&nbsp;</strong></h2>



<h3 class="wp-block-heading"><strong>1. HandBrake를 이용한 방법&nbsp;</strong></h3>



<p>HandBrake는 무료로 사용할 수 있는 강력한 동영상 변환 도구입니다.</p>



<p>-먼저&nbsp;HandBrake를 설치하고 실행합니다.</p>



<p>-.Open Source&nbsp;버튼을 클릭해 해상도를 줄일 동영상을 선택합니다.</p>



<p>-출력 설정에서&nbsp;Dimensions&nbsp;탭을 선택합니다.</p>



<p>-Width와&nbsp;Height&nbsp;값을 변경해 원하는 해상도를 설정합니다.</p>



<p>-Start Encode&nbsp;버튼을 눌러 변환을 시작합니다.<a href="https://handbrake.fr/downloads.php" target="_blank" rel="noreferrer noopener">HandBrake: Downloadshandbrake.fr</a></p>



<p><strong>홈페이지에 들어간 후 원하는 프로그램을 다운로드합니다.&nbsp;</strong></p>



<figure class="wp-block-image"><a href="https://handbrake.fr/downloads.php" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/beAP9y/btsoxXzskYV/2DxseyKzMNOcz4iqAuzb91/img.png" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 74"></a></figure>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/bIupaH/btsoyVVqwcb/FWoFa7qQk4Cwu1cwjQpsp1/img.png" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 75"></figure>



<p id="SE-7cdc5b06-06a4-4ecd-be3c-45956a12f50f">​</p>



<p id="SE-37b8e896-b7dc-4ba3-85cc-3901673d56f7">화질이 높을수록 동영상 파일의 용량이 커지며, 본인이 적합하다고 생각하는 해상도를 선택한 후 원하는 저장 위치를 지정해 준 다음 변환해 주기만 하면 끝이 납니다.</p>



<h3 class="wp-block-heading"><strong>2. 온라인 도구 Clipchamp를 이용한 방법&nbsp;</strong></h3>



<p><a href="https://clipchamp.com/ko/" target="_blank" rel="noreferrer noopener">한 곳에서 동영상 필요한 모든 것 | Clipchampclipchamp.com</a></p>



<figure class="wp-block-image"><a href="https://clipchamp.com/ko/" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/bRta9P/btsoz7BrLw3/rgppklyXC0sIyeA0GioNzK/img.png" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 76"></a></figure>



<p>-Clipchamp&nbsp;같은 온라인 도구를 사용하면 웹 브라우저에서</p>



<p>쉽게 해상도를 변경할 수 있습니다.</p>



<p>-Clipchamp&nbsp;사이트에 접속하고, Convert my video를 클릭합니다.</p>



<p>-변환할 동영상을 업로드합니다.</p>



<p>-설정에서 해상도를 변경합니다.</p>



<p>-Start를 눌러 변환을 시작하고,&nbsp;변환된 동영상을 다운로드 받습니다.</p>



<p>이밖에도 다양한 무료&nbsp;동영상 해상도 변경 프로그램이 있습니다.</p>



<p>-모바비 비디오 컨버터&nbsp;(무료)</p>



<p>-윈도우11에서 지원하는 동영상 편집기&nbsp;(무료)</p>



<p>-필모라&nbsp;(무료)</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/cqvtpL/btsoIMJRUeZ/jIf3L5uQqxjd8FxRoJfWBK/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 77"></figure>



<p>&nbsp;이와 같이 프로그램을 설치하고 해당하는&nbsp;</p>



<p>각 프로그램 도구의 사용 방법을 따르면 됩니다.&nbsp;</p>



<p>오늘은&nbsp; 동영상 해상도 줄이기 간단 방법을 살펴보았습니다.&nbsp;</p>



<p>이 외에도 여러 가지 방법이 있으니,&nbsp;사용자의 다양한 편의에 따라 선택하시면 됩니다.</p>



<p>도움이 되었길 바랍니다! 🙂</p>
<!-- CONTENT END 8 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blog.kakaocdn.net/dn/bDgjk0/btsoz8G7tzz/QFXSxoGkxE9RmkyB3Sn0Rk/img.jpg" medium="image"></media:content>
            	</item>
		<item>
		<title>동영상 해상도 줄이기 간단 방법</title>
		<link>https://2days.kr/06/10/18/7338/aboda/</link>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Fri, 06 Oct 2023 09:29:37 +0000</pubDate>
				<category><![CDATA[Aboda]]></category>
		<category><![CDATA[동영상]]></category>
		<category><![CDATA[동영상 해상도]]></category>
		<category><![CDATA[조절]]></category>
		<category><![CDATA[줄이기]]></category>
		<category><![CDATA[프로그램]]></category>
		<category><![CDATA[해상도]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=7338</guid>

					<description><![CDATA[우리가 영상물을 시청할 때 기본적으로 화면 비율과 픽셀 크기 등으로 인해서 화질이 달라지게 됩니다. 영상 화질에 민감하신 분들은 동영상 해상도 변경 프로그램을 통해서 이 부분을 바꾸실 수 있습니다.
오늘은 동영상 해상도에 대해 알아보겠습니다 :)]]></description>
										<content:encoded><![CDATA[
<p>우리가 영상물을 시청할 때 기본적으로 화면 비율과 픽셀 크기 등으로 인해서 화질이 달라지게 됩니다.&nbsp;영상 화질에 민감하신 분들은 동영상 해상도 변경 프로그램을 통해서 이 부분을 바꾸실 수 있습니다.&nbsp;</p>



<p>오늘은&nbsp;동영상 해상도에 대해 알아보겠습니다 🙂&nbsp;</p>



<figure class="wp-block-image"><img post-id="7335" fifu-featured="1" decoding="async" src="https://blog.kakaocdn.net/dn/bDgjk0/btsoz8G7tzz/QFXSxoGkxE9RmkyB3Sn0Rk/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 78"></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>




<h2 class="wp-block-heading">&nbsp;</h2>



<h2 class="wp-block-heading"><strong>동영상 해상도란?&nbsp;</strong></h2>



<p>동영상 해상도는 화면에 표시되는 픽셀 수를 의미합니다.&nbsp;보통 가로 픽셀 수와 세로 픽셀 수를 조합해 표현합니다.&nbsp;예를 들어, 1920&#215;1080&nbsp;해상도는 화면 가로에는&nbsp;1920개,&nbsp;세로에는&nbsp;1080개의 픽셀이 있다는 것을 의미합니다.</p>



<p>해상도가 높을수록 영상은 더욱 선명해집니다.&nbsp;그러나 높은 해상도의 동영상은 더 많은 데이터를 사용하므로,&nbsp;파일 크기가 커지고 인터넷 스트리밍시에는 더 많은 대역폭이 필요합니다.</p>



<p>다음은 몇 가지 일반적인 동영상 해상도입니다:</p>



<p>480p (Standard Definition, SD): 640&#215;480</p>



<p>720p (High Definition, HD): 1280&#215;720</p>



<p>1080p (Full High Definition, FHD): 1920&#215;1080</p>



<p>1440p (2K, Quad HD, QHD): 2560&#215;1440</p>



<p>2160p (4K, Ultra High Definition, UHD): 3840&#215;2160</p>



<p>4320p (8K, Full Ultra High Definition, FUHD): 7680&#215;4320</p>



<p>4K나&nbsp;8K와 같은 울트라 고해상도 동영상은 더 선명하고 더 자세한 이미지를 제공하지만,&nbsp;</p>



<p>그만큼 더 많은 저장 공간과 더 높은 재생 성능이 필요합니다.&nbsp;</p>



<p>따라서 이러한 고해상도 동영상을 사용하려면,&nbsp;이러한 요구 사항을 충족하는 하드웨어가 필요합니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/c6wcp5/btsoxFeUx9B/6Kkk5KMhUxP0RhEmmaBOyk/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 79"></figure>



<h2 class="wp-block-heading">&nbsp;</h2>



<h2 class="wp-block-heading"><strong>동영상 해상도를 줄이는 주요 이유</strong></h2>



<p><strong>1.&nbsp;데이터 사용량 감소</strong>:&nbsp;인터넷을 통해 동영상을 스트리밍 하거나 다운로드할 때,&nbsp;해상도가 높을수록 더 많은 데이터가 필요합니다.&nbsp;데이터 제한이 있는 경우나 모바일 데이터를 사용하는 경우,&nbsp;해상도를 낮추면 데이터 사용량을 줄일 수 있습니다.</p>



<p><strong>2.&nbsp;재생 성능 개선</strong>:&nbsp;높은 해상도의 동영상은 많은 컴퓨팅 자원을 필요로 합니다.&nbsp;일부 기기는&nbsp;4K&nbsp;또는 그 이상의 해상도를 재생하기 어려울 수 있습니다.&nbsp;따라서 해상도를 낮추면 이러한 기기에서 동영상을 재생하는 데 필요한 자원을 줄일 수 있습니다.</p>



<p><strong>3.&nbsp;파일 크기 감소</strong>:&nbsp;해상도가 높을수록 파일 크기가 커집니다.&nbsp;이러한 큰 파일은 저장 공간을 많이 차지하며,&nbsp;전송이나 업로드에 오랜 시간이 걸릴 수 있습니다.&nbsp;따라서 해상도를 줄이면 파일 크기를 줄일 수 있으며,&nbsp;이는 저장 공간의 효율적인 사용과 빠른 파일 전송에 도움이 됩니다.</p>



<p>그러나 해상도를 줄이면 동영상의 세부 정보와 이미지의 선명도가 손실될 수 있으므로,&nbsp;이러한 변화가 허용되는 상황에서만 해상도를 줄여야 합니다.</p>



<h2 class="wp-block-heading"><strong>동영상 해상도를 줄이는 데 사용할 수 있는 무료 도구</strong></h2>



<p><strong>1. HandBrake</strong>:&nbsp;이 소프트웨어는 동영상 해상도를 줄이는 데 매우 유용한 무료,&nbsp;오픈소스 도구입니다.&nbsp;다양한 포맷의 동영상 파일을 지원하며,&nbsp;사용자가 원하는 해상도로 동영상을 조정할 수 있습니다.&nbsp;여기에서 다운로드 받을 수 있습니다.</p>



<p><strong>2. VLC Media Player</strong>: VLC는 매우 인기 있는 무료 동영상 플레이어이며,&nbsp;동영상 변환 및 해상도 조정 기능도 제공합니다.&nbsp;사용자가 자신의 필요에 맞게 동영상의 해상도를 조정할 수 있게 해주는 이 기능은 매우 유용합니다.&nbsp;여기에서 다운로드 받을 수 있습니다.</p>



<p><strong>3. Shotcut</strong>: Shotcut은 무료,&nbsp;오픈소스 동영상 편집 소프트웨어로,&nbsp;동영상 해상도를 조정하는 기능을 제공합니다.&nbsp;다양한 포맷과 해상도를 지원하며,&nbsp;사용자가 자신의 필요에 따라 동영상을 편집하고 해상도를 조정할 수 있게 해 줍니다.. 여기에서 다운로드할 수 있습니다.</p>



<p>위의 도구들은 각각의 공식 웹사이트에서 직접 다운로드할 수 있습니다.&nbsp;어떤 도구를 선택할지는 사용자의 개인적인 필요와 선호에 따라 다릅니다.&nbsp;각 도구에는 해당 도구를 사용하여 동영상 해상도를 조정하는 방법에 대한 안내가 있으니,&nbsp;해당 사항을 확인하시기 바랍니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/djp8wD/btsoIOgCG17/kn3aL3aYnMNXKXK7hwE8Qk/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 80"></figure>



<h2 class="wp-block-heading">&nbsp;</h2>



<h2 class="wp-block-heading"><strong>동영상 해상도를 줄이는 방법&nbsp;</strong></h2>



<h3 class="wp-block-heading"><strong>1. HandBrake를 이용한 방법&nbsp;</strong></h3>



<p>HandBrake는 무료로 사용할 수 있는 강력한 동영상 변환 도구입니다.</p>



<p>-먼저&nbsp;HandBrake를 설치하고 실행합니다.</p>



<p>-.Open Source&nbsp;버튼을 클릭해 해상도를 줄일 동영상을 선택합니다.</p>



<p>-출력 설정에서&nbsp;Dimensions&nbsp;탭을 선택합니다.</p>



<p>-Width와&nbsp;Height&nbsp;값을 변경해 원하는 해상도를 설정합니다.</p>



<p>-Start Encode&nbsp;버튼을 눌러 변환을 시작합니다.<a href="https://handbrake.fr/downloads.php" target="_blank" rel="noreferrer noopener">HandBrake: Downloadshandbrake.fr</a></p>



<p><strong>홈페이지에 들어간 후 원하는 프로그램을 다운로드합니다.&nbsp;</strong></p>



<figure class="wp-block-image"><a href="https://handbrake.fr/downloads.php" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/beAP9y/btsoxXzskYV/2DxseyKzMNOcz4iqAuzb91/img.png" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 81"></a></figure>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/bIupaH/btsoyVVqwcb/FWoFa7qQk4Cwu1cwjQpsp1/img.png" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 82"></figure>



<p id="SE-7cdc5b06-06a4-4ecd-be3c-45956a12f50f">​</p>



<p id="SE-37b8e896-b7dc-4ba3-85cc-3901673d56f7">화질이 높을수록 동영상 파일의 용량이 커지며, 본인이 적합하다고 생각하는 해상도를 선택한 후 원하는 저장 위치를 지정해 준 다음 변환해 주기만 하면 끝이 납니다.</p>



<h3 class="wp-block-heading"><strong>2. 온라인 도구 Clipchamp를 이용한 방법&nbsp;</strong></h3>



<p><a href="https://clipchamp.com/ko/" target="_blank" rel="noreferrer noopener">한 곳에서 동영상 필요한 모든 것 | Clipchampclipchamp.com</a></p>



<figure class="wp-block-image"><a href="https://clipchamp.com/ko/" target="_blank" rel="noopener"><img decoding="async" src="https://blog.kakaocdn.net/dn/bRta9P/btsoz7BrLw3/rgppklyXC0sIyeA0GioNzK/img.png" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 83"></a></figure>



<p>-Clipchamp&nbsp;같은 온라인 도구를 사용하면 웹 브라우저에서</p>



<p>쉽게 해상도를 변경할 수 있습니다.</p>



<p>-Clipchamp&nbsp;사이트에 접속하고, Convert my video를 클릭합니다.</p>



<p>-변환할 동영상을 업로드합니다.</p>



<p>-설정에서 해상도를 변경합니다.</p>



<p>-Start를 눌러 변환을 시작하고,&nbsp;변환된 동영상을 다운로드 받습니다.</p>



<p>이밖에도 다양한 무료&nbsp;동영상 해상도 변경 프로그램이 있습니다.</p>



<p>-모바비 비디오 컨버터&nbsp;(무료)</p>



<p>-윈도우11에서 지원하는 동영상 편집기&nbsp;(무료)</p>



<p>-필모라&nbsp;(무료)</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/cqvtpL/btsoIMJRUeZ/jIf3L5uQqxjd8FxRoJfWBK/img.jpg" alt="동영상 해상도 줄이기 간단 방법" title="동영상 해상도 줄이기 간단 방법 84"></figure>



<p>&nbsp;이와 같이 프로그램을 설치하고 해당하는&nbsp;</p>



<p>각 프로그램 도구의 사용 방법을 따르면 됩니다.&nbsp;</p>



<p>오늘은&nbsp; 동영상 해상도 줄이기 간단 방법을 살펴보았습니다.&nbsp;</p>



<p>이 외에도 여러 가지 방법이 있으니,&nbsp;사용자의 다양한 편의에 따라 선택하시면 됩니다.</p>



<p>도움이 되었길 바랍니다! 🙂</p>
<!-- CONTENT END 9 -->
]]></content:encoded>
					
		
		
		<media:content url="https://blog.kakaocdn.net/dn/bDgjk0/btsoz8G7tzz/QFXSxoGkxE9RmkyB3Sn0Rk/img.jpg" medium="image"></media:content>
            	</item>
		<item>
		<title>‘맥북’ ‘유투브’ 다운 프로그램</title>
		<link>https://2days.kr/05/01/08/5425/it/</link>
					<comments>https://2days.kr/05/01/08/5425/it/#comments</comments>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Wed, 04 Jan 2023 23:25:58 +0000</pubDate>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[다운]]></category>
		<category><![CDATA[맥북]]></category>
		<category><![CDATA[유투브]]></category>
		<category><![CDATA[프로그램]]></category>
		<guid isPermaLink="false">https://2days.kr/?p=5425</guid>

					<description><![CDATA[윈도우에서 유투브를 다운 받는 방법은 아는 분들이 많으신데 ‘맥북’ 에서 ‘유투브’ 다운 받는 법 모르시는 분들이 많더라구요.

그래서 오늘은 맥북, 아이맥 등 맥에서 유튜브를 이용하실 때 영상을 다운로드 할 수 있는 프로그램인 YT Saver Video에 대해서 알아보고 사용해 보도록 하겠습니다.]]></description>
										<content:encoded><![CDATA[
<p>윈도우에서 유투브를 다운 받는 방법은 아는 분들이 많으신데 ‘맥북’ 에서 ‘유투브’ 다운 받는 법 모르시는 분들이 많더라구요.<br /><br />그래서 오늘은 맥북, 아이맥 등 맥에서 유튜브를 이용하실 때 영상을 다운로드 할 수 있는 프로그램인 YT Saver Video에 대해서 알아보고 사용해 보도록 하겠습니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/tKlXB/btrVpfH9WQL/Y1MYD8DjkmiHtSlHKbkAYk/img.png" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 85"><figcaption class="wp-element-caption">오늘은 맥북용 유튜브 다운로드 프로그램 알아봐유</figcaption></figure><div class='code-block code-block-2' style='margin: 8px auto; text-align: center; display: block; clear: both;'>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8940400388075870"
     crossorigin="anonymous"></script>
<!-- 중간 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-8940400388075870"
     data-ad-slot="8794586137"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>




<p><br />YT Saver Video는 유튜브 영상을 저장할 때 화질과 포맷을 선택해서 받으실 수 있고, 사운드만 필요하시다면 소리만 mp3 파일로 추출도 가능한 편리한 프로그램입니다.<br /><br />다운로드 : YT Saver Video Download<br /><a href="https://ytsaver.net/" target="_blank" rel="noreferrer noopener">https://ytsaver.net</a><a href="https://ytsaver.net/" target="_blank" rel="noreferrer noopener">YT Saver Video Downloader &amp; Converterytsaver.net</a></p>



<p><br />Download 버튼을 클릭해서 다운로드를 진행해 줍니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/RfmEl/btrVpvcVvfM/HV5ts3KG88T0baRm6y0wX0/img.jpg" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 86"></figure>



<p>Start Torrent를 클릭하시면 웹 토렌트를 통해서 프로그램 다운로드가 가능합니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/biLJHq/btrVqJaHdBO/NrYhlHCQxcfCcuVPCQkZ81/img.jpg" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 87"></figure>



<p>다운로드가 완료되셨다면 먼저 게이트 키퍼를 비활성화 해줘야 합니다.<br />[Open Gatekeeper friendly]를 실행시켜 주세요</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/H4YeC/btrVnZluOfo/IkUjkUDwUP50FqK1dOODDK/img.jpg" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 88"></figure>



<p>터미널 창이 열리게 됩니다. 엔터키를 눌러서 [프로세스 완료됨] 이라고 나오면 성공입니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/X0Mvu/btrVjPqsySA/k3q1fyRdhwVFQk3sAiBEFk/img.jpg" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 89"></figure>



<p>그러면 자동으로 YT Saver 다운로드 할 수 있는 창이 열리게 됩니다.<br />YT Saver를 Applications로 옮겨 주세요</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/cCwHRr/btrVpeCtyuP/XCDHhinysR8uktvFAWtmw1/img.jpg" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 90"></figure>



<p>다 옮겨 지셨다면 이제 응용 프로그램으로 들어가 보시면 YT Saver가 정상적으로 설치되어 있는 것을 확인하실 수 있습니다.<br /><br />클릭해서 YT Saver를 실행해 줍니다.</p>



<figure class="wp-block-image"><img decoding="async" src="https://blog.kakaocdn.net/dn/bPq6k0/btrVsnLYhZb/9eqz28fJx9vKYecdG05Jlk/img.jpg" alt="img" title="‘맥북’ ‘유투브’ 다운 프로그램 91"></figure>



<p>유튜브 영상 다운로드는 URL 주소를 붙여넣어서 할 수 있습니다.<br><br>다운로드를 원하시는 유튜브 영상 주소를 붙여넣어서 다운로드를 진행해 주세요<br>감사합니다.</p>



<p></p>
<!-- CONTENT END 10 -->
]]></content:encoded>
					
					<wfw:commentRss>https://2days.kr/05/01/08/5425/it/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<media:content url="https://blog.kakaocdn.net/dn/tKlXB/btrVpfH9WQL/Y1MYD8DjkmiHtSlHKbkAYk/img.png" medium="image"></media:content>
            	</item>
	</channel>
</rss>
