inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

driver.execute_script("arguments[0].click()", element)이 작동하지 않습니다..

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pandas as pd from selenium.webdriver.support.select import Select #드라이버 생성 driver = webdriver.Chrome() #페이지 이동 driver.get("https://cafe.naver.com/startcodingofficial") #유투브 후기 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#menuLink15').click() #프레임 전환 iframe = driver.find_element(By.CSS_SELECTOR, '#cafe_main') driver.switch_to.frame(iframe) #50개씩 표시하기 클릭 element = driver.find_element(By.CSS_SELECTOR, '#listSizeSelectDiv > ul > li:last-child') #50개씩 버튼 # #해결방법 1. 태그를 보이게 만들고 클릭하기. # driver.find_element(By.CSS_SELECTOR, '#listSizeSelectDiv > a').click() #15개씩 버튼 먼저클릭 해서 버튼 보이게 한 후 # element.click() #50개씩버튼 클릭 #해결방법 2. 자바스크립트 이용해서 태그 강제 클릭 driver.execute_script("arguments[0].click()", element) time.sleep(1) 저는 이 코드를 실행하면 에러가 나는게 아니라 50개씩 버튼이 안 눌러지고 코드가 끝나는데 왜그런걸까요...

  • python
  • 웹-크롤링
gnslgnsdl3 댓글 2 좋아요 1 조회수 308

메일버튼 클릭하고 하단바에 메일버튼을 클릭하려고 하니까 ElementClickInterceptedException 이 발생했어요.

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

user_id = '****' user_pw = '****' from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import pyperclip #드라이버 생성 driver = webdriver.Chrome() driver.implicitly_wait(10) #페이지 이동 driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/") time.sleep(1) #아이디 입력 id = driver.find_element(By.CSS_SELECTOR, '#id') pyperclip.copy(user_id) #클립보드라는 공간에 user_id를 복사해놓음. id.send_keys(Keys.CONTROL, 'v') #붙여넣기. time.sleep(1) #비밀번호 입력 pw = driver.find_element(By.CSS_SELECTOR, '#pw') pyperclip.copy(user_pw) #클립보드라는 공간에 user_pw를 복사해놓음. pw.send_keys(Keys.CONTROL, 'v') time.sleep(1) #로그인 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#log\\.login').click() # 메일 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__my_menu___eF24q > div > div > ul > li:nth-child(1) > a > span.MyView-module__item_text___VTQQM').click() driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() #새창으로 전환 driver.switch_to.window(driver.window_handles[1]) # 메일쓰기 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#root > div > nav > div > div.lnb_header > div.lnb_task > a.item.button_write').click() # 받는 사람 driver.find_element(By.CSS_SELECTOR, '#recipient_input_element').send_keys('gnslgnsdl@naver.com') # 제목 driver.find_element(By.CSS_SELECTOR, '#subject_title').send_keys('연습') #서브페이지로 이동 iframe = driver.find_element(By.CSS_SELECTOR, '#content > div.contents_area > div > div.editor_area > div > div.editor_body > iframe') driver.switch_to.frame(iframe) #본문 driver.find_element(By.CSS_SELECTOR, '#log\\.login').send_keys('연습중') #다시 메인페이지로 이동 driver.switch_to.default_content() #보내기 버튼 클릭 driver.find_element(By.CSS_SELECTOR, '#content > div.mail_toolbar.type_write > div:nth-child(1) > div > button.button_write_task').click() 에러내용: 예외가 발생했습니다. ElementClickInterceptedException Message: element click intercepted: Element <a href=" https://mail.naver.com/ " target="_blank" class="MyView-module__link_service___Ok8hP">...</a> is not clickable at point (937, 789). Other element would receive the click: <a href="#" role="button" class="SettingView-module__btn_setting___Z_3Uu SettingView-module__type_top___GkN8V" aria-pressed="false">...</a> (Session info: chrome=131.0.6778.205) Stacktrace: GetHandleVerifier [0x00007FF6E6F2FB05+28789] (No symbol) [0x00007FF6E6E986E0] (No symbol) [0x00007FF6E6D3592A] (No symbol) [0x00007FF6E6D90FDE] (No symbol) [0x00007FF6E6D8EA7C] (No symbol) [0x00007FF6E6D8BC46] (No symbol) [0x00007FF6E6D8ABA1] (No symbol) [0x00007FF6E6D7CD60] (No symbol) [0x00007FF6E6DAF43A] (No symbol) [0x00007FF6E6D7C5B6] (No symbol) [0x00007FF6E6DAF650] (No symbol) [0x00007FF6E6DCF654] (No symbol) [0x00007FF6E6DAF1E3] (No symbol) [0x00007FF6E6D7A938] (No symbol) [0x00007FF6E6D7BAA1] GetHandleVerifier [0x00007FF6E726933D+3410093] GetHandleVerifier [0x00007FF6E727E7DD+3497293] GetHandleVerifier [0x00007FF6E7272A73+3448803] GetHandleVerifier [0x00007FF6E6FF7BBB+848171] (No symbol) [0x00007FF6E6EA3C3F] (No symbol) [0x00007FF6E6E9F6E4] (No symbol) [0x00007FF6E6E9F87D] (No symbol) [0x00007FF6E6E8ED49] BaseThreadInitThunk [0x00007FF906E3259D+29] RtlUserThreadStart [0x00007FF90852AF38+40] File " C:\Users\gnslg\OneDrive\ 바탕 화면\PYTHON_CRAWLLING\셀레니움실전테크닉\ 06네이버메일자동화.py ", line 36, in <module> driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <a href=" https://mail.naver.com/ " target="_blank" class="MyView-module__link_service___Ok8hP">...</a> is not clickable at point (937, 789). Other element would receive the click: <a href="#" role="button" class="SettingView-module__btn_setting___Z_3Uu SettingView-module__type_top___GkN8V" aria-pressed="false">...</a> (Session info: chrome=131.0.6778.205) Stacktrace: GetHandleVerifier [0x00007FF6E6F2FB05+28789] (No symbol) [0x00007FF6E6E986E0] (No symbol) [0x00007FF6E6D3592A] (No symbol) [0x00007FF6E6D90FDE] (No symbol) [0x00007FF6E6D8EA7C] (No symbol) [0x00007FF6E6D8BC46] (No symbol) [0x00007FF6E6D8ABA1] (No symbol) [0x00007FF6E6D7CD60] (No symbol) [0x00007FF6E6DAF43A] (No symbol) [0x00007FF6E6D7C5B6] (No symbol) [0x00007FF6E6DAF650] (No symbol) [0x00007FF6E6DCF654] (No symbol) [0x00007FF6E6DAF1E3] (No symbol) [0x00007FF6E6D7A938] (No symbol) [0x00007FF6E6D7BAA1] GetHandleVerifier [0x00007FF6E726933D+3410093] GetHandleVerifier [0x00007FF6E727E7DD+3497293] GetHandleVerifier [0x00007FF6E7272A73+3448803] GetHandleVerifier [0x00007FF6E6FF7BBB+848171] (No symbol) [0x00007FF6E6EA3C3F] (No symbol) [0x00007FF6E6E9F6E4] (No symbol) [0x00007FF6E6E9F87D] (No symbol) [0x00007FF6E6E8ED49] BaseThreadInitThunk [0x00007FF906E3259D+29] RtlUserThreadStart [0x00007FF90852AF38+40] 메일버튼 클릭하고 하단바에 메일버튼을 클릭하려고 하니까 ElementClickInterceptedException 이 발생했어요. driver.find_element(By.CSS_SELECTOR, '#account > div.MyView-module__layer_menu_service___NqMyX > div.MyView-module__service_sub___wix9p > div.MyView-module__sub_left___AIWHR > a').click() 여기서 발생하는거 같은데 이유가 뭘까요..?

  • python
  • 웹-크롤링
gnslgnsdl3 댓글 1 좋아요 1 조회수 178

[질문] 네이버쇼핑 - 로그인이 필요한 제품에 가격 가져오기

미해결

코딩없이 시작하는 엑셀 크롤링. WEB부터 ChatGPT API까지

안녕하세요. 네이버쇼핑에서 어떤 특정 제품은 로그인을 해야 제품 가격을 볼수 있는데요. (레이저 포인터는 19세 이상 구매할수 있어서 성인 인증을 받아야 합니다.) https://search.shopping.naver.com/catalog/11269411900?cat_id=50002931 이런경우 파워쿼리로 웹 주소를 넣으면 로그인을 하라고 나오고 더이상 진행이 안 되구요. 말씀하신 네이버API 로 가져와볼려고 했더니 이런식으로 나오고 애플리케이션 등록이 등록이 안 되더라구요. 혹시 API 를 이미 발급 받아서 인걸까요? (API 상태라고 적혀있긴 합니다.) 그리고 네이버 API 를 통해서, 네이버 로그인이 필요한 제품의 가격을 가져 올수 있을까요? 가져올려는 것은 아래의 가격 정보를 가져올려고 합니다.

  • 웹-크롤링
  • rpa
  • excel-powerquery
  • 웹-스크래핑
  • openai-api
poongak 댓글 2 좋아요 0 조회수 285

네이버지식인 gui 추출하기

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 맥으로 수강중인 사람입니다. 다름이아니라 네이버지식인gui를 vscode에서 코드 실행 후 저장버튼을 누르면 엑셀파일로 저장이 잘되었는데 실행파일로 만들고 추출한다음 저장버튼을 누르면 저장이 되지않습니다 이유를 알수있을가요? 코드를 다시봐도 문제는 없는데 이유를 못찾겠습니다ㅠㅠ

  • python
  • 웹-크롤링
김정학 댓글 1 좋아요 0 조회수 116

커널(★Python 3.12.8 ~~맞춤 vs Python 3.12.8 ~~ Global Env)이 서로 다른것인가요?

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 오늘 네이버지식인GUI.exe를 만드는데 성공하였습니다. 그런데 처음에는 실패했습니다. 그이유는 커널이 이미지에서 위에 것(★Python 3.12.8 ~~~ 맞춤)으로 되어 있었습니다. pip install pyinstaller 해도 설치가 안된것으로 나왔습니다.(pip --version으로 확인) 그런데 아래것(Python 3.12.8 ~~~Global Env) 선택하니 모든것이 잘 되었습니다. [문의사항] 위에것 아래것 모두 버전이 Python3.12.8로 동일한데 이 두개가 서로 다른것인가요? 만약 다르다면 저는 python을 오늘 삭제하고 Python3.12.8을 1번만 설치했습니다. 이렇게 두개가 보이는 이유는 무엇일까요? 감사합니다.

  • python
  • 웹-크롤링
saintchubby 댓글 2 좋아요 0 조회수 174

주피터 노트북 관련해서 궁금한게 있습니다!

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

안녕하세요. 주피터 노트북을 다운받았는데 강사님 인터페이스에서는 In []이렇게 나오는데 저는 In이 나오지 않아서요.. 혹시 제가 잘못 설치한건가 싶어서 여쭤봅니다

  • python
  • 웹-크롤링
올챙이 댓글 1 좋아요 0 조회수 87

셀레니움 관련 질문입니다.

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요. 군대에서 정말 잘 듣고있습니다. 아무래도 싸지방이다보니 codespace로 동작시켰는데요. 다름이 아니라 셀레니움 부분을 공부하던 중 어찌저찌해서 driver를 연결까진 했으나, 화면이 뜨지 않아서 질문드립니다. 에러가 나는 것은 아니지만, 아마 GUI가 설정이 안되어있어서 그런 것 같습니다. 어떻게 해야할까요? 아래는 driver = webdriver.Chrome()를 codespace에 맞게 변경한 코드이고 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # ChromeDriver 경로 명시 chromedriver_path = "/usr/local/bin/chromedriver" # ChromeDriver 경로 chrome_path = "/usr/bin/google-chrome" # Chrome 브라우저 경로 (시스템에 따라 다를 수 있음) # Chrome 옵션 설정 options = Options() options.add_argument("--headless") # GUI 없이 실행 options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.binary_location = chrome_path # Chrome 브라우저 경로 설정 # ChromeDriver 서비스 설정 service = Service(chromedriver_path) # WebDriver 생성 driver = webdriver.Chrome(service=service, options=options) 아래는 이로인해 나타나는 화면입니다. driver.get() 등등의 메소드를 이용하면 title, current_url의 결과로 잘 작동되는 것을 알 수 있습니다. 하지만, 화면이 바뀌지 않아서 문제입니다. 앞에서도 언급했지만, GUI를 codespace에서 설정하는 방법을 알아야할 거 같은데 쉽지 않습니다.. GUI가 없다보니 headless를 설정할 수밖에 없었구요..

  • python
  • 웹-크롤링
jcy4023 댓글 1 좋아요 1 조회수 171

login.ui.py파일이 생성되지 않아요.

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요. 저는 login.ui.py 파일이 생성되지 않아 문의 드립니다. 아래 캡켜화면은 저의 VScode입니다. 강의에서 06.GUI프로그래밍을 프로젝트폴더로 선택한 상태에서 아래의 터미널에 입력(pyside6-uic login.ui -o login_ ui.py)을 하였으나 에러문구가 뜹니다. 제가 무엇을 잘못했는지 궁금합니다. 감사합니다. ================================================================ 강의 노트에 아래의 문구가 있어 다시 문의드립니다. (문의사항) 확장프로그램(Qt for Python)은 이제 설치하지 않아도 되는가요? 터미널에서 명령이 실행을 제가 올바르게 한건지 확인 부탁드립니다.

  • python
  • 웹-크롤링
saintchubby 댓글 2 좋아요 0 조회수 146

추출한 데이터 자체의 문제에 대해 궁금합니다.

해결됨

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. RISS의 주제저를 추출하는 부분에서 파이썬을 이용한 크롤링은 잘 되었습니다. 하지만 크롤링한 데이터를 보니 웹에는 표시되지 않는 문자들이 같이 출력되었습니다. 저만 이런 문자가 추가로 붙었는지 궁금해서 강사님의 강의도 보니 강사님의 강의에서도 똑같이 추출한 데이터에서 문자가 추가된 것을 확인할 수 있었습니다. 마지막 줄에 AI하고 \u3000 이라는 문자가 추가되었는데 외주를 할 때 이런 오류는 문제가 되지 않는지 궁금합니다.

  • python
  • 웹-크롤링
JaeYeong 댓글 1 좋아요 0 조회수 80

강의자료 이미지 안나옴

해결됨

남박사의 파이썬 기초부터 실전 100% 활용

파이썬 기본문법 강의자료 이미지가 안나옵니다.

  • python
  • 웹-크롤링
teran 댓글 3 좋아요 0 조회수 292

selenium 업그레이드됨... 문법도 바뀜

미해결

파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)

기존 강의에서 elem = browser.find_element_by_id("query") 였는데 이제는 elem = browser.find_element("id","query") 이렇게 작성해야함 ㅜㅜ 계속 AttributeError 떠서 미치는줄 알았는데 구글링해서 찾다보니 나와서 써보니 문법이 바뀐거였음

  • python
  • 웹-크롤링
  • selenium
  • 웹-스크래핑
우성 댓글 1 좋아요 1 조회수 328

섹션8. 여러 태그제어하기 checkbox 자동선택시 궁금한게 있습니다

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

검사를 눌러 개발자도구로 가면 label이 선택되어... .input-checkbox > label 로 잘가져오며 잘 테스트가 됩니다. 따라하다 보니 궁금한점이 있습니다. checkbox에 클릭을 하는게 목적인데 저는 이렇게 한번 시도해 봤습니다. checkboxes = driver.find_elements(By.CSS_SELECTOR, "input[type='checkbox']") # 각 체크박스 클릭 for checkbox in checkboxes: if not checkbox.is _selected(): checkbox.click () time.sleep(0.5) # 잠시 대기 왜 label.click()만 되는지 궁금합니다

  • python
  • 웹-크롤링
21thjojo 댓글 2 좋아요 0 조회수 99

def에서 print와 return의 차이점이 뭘까요?

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

안녕하세요~! 잔재미코딩님을 열심히 믿고 따라가고 있는 수강생입니다. 다름이 아니라 함수 사용에서 print와 return의 차이점이 잘 이해가 되지 않아서요. def cal(a, b, c): if c == '+' : return a + b elif c == '*' : return a * b else : return 0 예를 들면 위 함수 코드를 실행하고 data = cal(2, 3, "*") print(data) 를 실행하면 바로 6이 나오지만 위의 코드에서 return대신 print()를 사용하면 data = cal(2, 3, "*") print(data) 를 실행 시 6 None 이 나온다는 차이점은 느꼈습니다. 근데 왜 이런것인지 잘 이해가 안돼요 ㅠㅠ 정확한 둘의 사용상 차이점이 무엇인가요?

  • python
  • 웹-크롤링
allie1017 댓글 1 좋아요 1 조회수 276

강의자료 문의 드립니다.

미해결

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 강의 잘 듣고 있습니다. 처음이라 속도가 나지는 않지만 재밌게 잘 듣고 있습니다. 카페에서 다운받은 자료집 2개(초고속 파이썬 정복, 1분 파이썬 강의자료)가 있습니다. 이것외에 혹시 강의자료나 자료집이 있는지 궁급합니다. 감사합니다.

  • python
  • 웹-크롤링
saintchubby 댓글 2 좋아요 0 조회수 118

한글폰트 관련해서 문의드립니다.

미해결

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

안녕하세요 다른 쥬피터랩에서 실행하고 있는데요.. import koreanize_matplotlib 진행을 했는데도... import koreanize_matplotlib import matplotlib.pyplot as plt import seaborn as sns import pandas as pd from pandas.plotting import register_matplotlib_converters # 그래프에 retina display 적용 %config InlineBackend.figure_format = 'retina' register_matplotlib_converters() # Matplotlib에서 날짜 데이터를 처리하기 위한 변환기 등록 # 데이터 예시 (실제 사용 시 'data' DataFrame이 필요합니다) data = pd.DataFrame({ '등록일시': ['2023-01-01', '2023-02-01', '2023-03-01'], '참가업체수': [10, 15, 20] }) data['등록일시'] = pd.to _datetime(data['등록일시']) # '등록일시'를 기준으로 데이터 정렬 data_sorted = data.sort_values('등록일시') # 시간에 따른 '참가업체수' 선 그래프 그리기 plt.figure(figsize=(12, 6)) # 그래프 크기 설정 sns.lineplot(data=data_sorted, x='등록일시', y='참가업체수') # 선 그래프 생성 plt.title('시간에 따른 참가업체수 분석') # 그래프 제목 설정 plt.xlabel('날짜') # x축 라벨 설정 plt.ylabel('참가업체수') # y축 라벨 설정 plt.xticks(rotation=45) # x축 눈금 라벨 회전 plt.tight_layout() # 그래프 레이아웃 조정 # 그래프 표시 plt.show ( ) 이런 에러가 계속 나서요.. 혹시 어떻게 진행하면...될까요 ㅜㅜ

  • python
  • pandas
  • numpy
  • 웹-크롤링
  • seaborn
  • plotly
  • matplotlib
  • 웹-스크래핑
자유 free 댓글 2 좋아요 0 조회수 281

append 함수에서 추가가 안됩니다.

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

에러는 안뜬것같은데 다음과 같이 추가가 안됩니다 ㅠ

  • python
  • 웹-크롤링
rladlfrnbb 댓글 1 좋아요 0 조회수 101

강의자료 질문 두번째

해결됨

남박사의 파이썬 기초부터 실전 100% 활용

자료가 파이썬 소스코드로 되어 있는데 출력된 결과물을 PDF로 볼수 있을까요?

  • python
  • 웹-크롤링
teran 댓글 3 좋아요 0 조회수 209

강의자료 관련 질문

미해결

남박사의 파이썬 기초부터 실전 100% 활용

혹시 강의 자료는 어디서 다운로드 가능한가요?

  • python
  • 웹-크롤링
teran 댓글 1 좋아요 0 조회수 146

연습문제1번 추가질문

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

연습문제 1번 Blog와 about 메뉴리스트 출력하기 중 select_one을 이용해 하위 태그를 이용했는데 blog 라는 결과값이 중복되서 나오드라구요 하위태그의 클래스 이름이 같기 때문에 첫 번째 blog만 나오게 되는건가요? 저는 상위 태그가 다르기 때문에 별도로 blog와 about 나올거라 생각을 한것 같습니다. 설명 부탁드리겠습니다.

  • python
  • 웹-크롤링
jwhong0228 댓글 1 좋아요 0 조회수 72

연습문제1번

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

연습문제 1번 Blog와 about 메뉴리스트 출력하기 중 문자열로 변환하는 함수에서 변수.string 과 변수.get_text() 결과값이 다르게 나오는데 차이점 설명 부탁드립니다.

  • python
  • 웹-크롤링
jwhong0228 댓글 1 좋아요 0 조회수 66

인기 태그

인프런 TOP Writers

주간 인기글