묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
쿠팡 브랜드 CSS 선택자
강의에서는 class name이 a.prod-brand-name로 잘 나오는데,제가 사이트에서 확인할 때는 .prod-brand-name brandshop-link 으로 보입니다.실행시켜보면a.prod-brand-name 이 맞고.prod-brand-name brandshop-link 는 아닙니다.직접 찾아볼 때는 .prod-brand-name이 안보이는데 어떻게 찾을 수 있을까요?CSS 선택자를 잘 못 정하겠습니다.ㅠㅠ
-
해결됨실시간 트렌드 홈페이지 개발(파이썬 크롤링 + Flask)
[page숫자설정]int(page) 관련문의드립니다.
page=request.form['input2'] 가 text 형이어서 for 문에서 사용할 때에 int(page)로 해주어야 오류가 없는데요.index.html 에서 <input type='number'... > 로 number로 지정을 해주는 데 이 때부터 text 가 되는 건지, 아니면 request.form 을 하면서 text로 바뀌는 건지요?
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
파일에 답이 작성되어 있어요
문제를 풀며 가장 자연스럽게 익숙해지는 파이썬 기본: 문자열,리스트,조건문 활용1강의자료에서 python-question2-web파일에 답이 다 작성되어있는데, 답 작성이 되지 않은 파일은 없나요?- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
팝업이 안뜹니다. AssertionError: Tkinter is required for pymsgbox
AssertionError: Tkinter is required for pymsgboxpip install tk 도 해봤지만 자꾸 에러메시지가 뜹니다. 구글링 해봐도 답이 안나와서 질문드립니다.
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
pylint
visual studio에서 pylint 저장까지 다 했는데 view에서 command palette에 들어가서 python: select linter가 안떠요.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
업데이트 된 API 를 기존 강의 내용에 맞게 따라하던 중 문제가 발생하였습니다.
from openai import OpenAI client = OpenAI( api_key = "----" ) message = [] while True : user_cotent = input("user : ") message.append({"role": "system", "content": f"{user_cotent}"}) completion = client.chat.completions.create(model="gtp=3.5-turbo", messages=message) assisant_content = completion.choices[0].message["content"] message.append({"role": "assiant", "content": f"{assisant_content}"}) print(f"GPT : {assisant_content}") 업데이트 된 API로 인하여 강의에서 막혔던 부분을 유튜브를 통해 해결하고 API Key에서 막혔던 부분은 결제를 통하여 해결하였습니다. 그리고 유튜브에서 업데이트 된 Assistant 내용이 있어 그 부분까지는 따라했습니다.그런데 58강(openai API 사용법(ChatGPT gpt-3.5-turbo 모델) 강의 내용을 제 나름대로 업데이트된 API 코딩에 맞게 수정하여 실행해 봤는데 에러가 발생하네요기존 강의와 업데이트 된 API 는 접목이 되지 않는건가요? 그렇다면 API와 대화하듯이 질문을 주고 받는 것은 업데이트 된 Assisant 코딩에서 수정을 하여 만들어야 하는건가요? 이 뒷 강의들을 내용을 아직 보지는 않았으나 만일 현재 업데이트된 API와 맞지 않다면 어떻게 공부하는게 맞을까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
텔레그램 API 질문드립니다
좋은 강의 감사합니다. 궁금한게 있어 질문 남겨드립니다!강의 예시와 같이 message 값을 직접 입력하지 않고, 텔레그램 채팅창에 입력한 값으로 바로 활용하고자 할 경우 어떻게 응용 가능할지도 궁금합니다~
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
add 함수 문의 ㅠㅠ
c = 10 def add(a,b): global c c = a+b return c b = add(1,10) print(b,c)여기서 왜 11 11이 나오는지 모르겠어요b는 add(1,10) 이니까 11이 맞는거 같은데c= global 이라 밖에 10을 쓴다고 했는데요c는 10 이 맞지 않나요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
형식 문의드립니다.
2분51초에 print("소님이 {} 명 입니다.".format(guest))이렇게 쓰셨는데.format, .get 이런 함수들을 쓰시던데 .xx가 어떤 기준으로 쓰는지 어떨 때 get or format 등등 쓰는지 궁금합니다.
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
키워드입력시 오류
안녕하세요 선생님 2가지의 질문이 있습니다.아래와 같이 코드를 구성했습니다.1. 키워드로 강남역 맛집 / 이태원 술집으로는 엑셀파일로 저장이 잘 되는데 "행궁동 맛집"이라고 치면 아래와 같은 오류가 출력됩니다. 왜이러는 걸까요?제 생각엔 "이태원 술집" , "강남역 맛집"에서는 iframe 안쪽을 한번 클릭 하는 것이 실행이 되는 것 같은데 "행궁동 맛집", "용산역 맛집"에서는 검색어 입력 후 iframe 클릭 하지 않고 바로 스크롤이 되는 것 같습니다. C:\CRAWLLING>C:/Users/libra_erv8ij1/AppData/Local/Programs/Python/Python312/python.exe c:/CRAWLLING/CRAWLING심화/ch7.네이버지도크롤링/06.데이터저장.pyc:\CRAWLLING\CRAWLING심화\ch7.네이버지도크롤링\06.데이터저장.py:85: SyntaxWarning: invalid escape sequence '\c'wb.save(f"CRAWLING심화\ch7.네이버지도크롤링\\{keyword}.xlsx")Traceback (most recent call last):File "c:\CRAWLLING\CRAWLING심화\ch7.네이버지도크롤링\06.데이터저장.py", line 81, in <module>print(rank, name, star)^^^^NameError: name 'name' is not definedfrom selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time from webdriver_manager.chrome import ChromeDriverManager import pyautogui import openpyxl keyword = pyautogui.prompt("검색어를 입력하세요") wb = openpyxl.Workbook() ws = wb.create_sheet(keyword) ws.append(["순위", "이름", "별점"]) chrome_options = Options() chrome_options.add_experimental_option("detach", True) chrome_options.add_experimental_option('excludeSwitches', ["enable-logging"]) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) driver.implicitly_wait(10) driver.maximize_window() driver.get("https://map.naver.com/v5/") search = driver.find_element(By.CSS_SELECTOR, "input.input_search") search.click() time.sleep(1) search.send_keys(keyword) time.sleep(1) search.send_keys(Keys.ENTER) time.sleep(2) # iframe 안으로 들어가기 driver.switch_to.frame("searchIframe") # driver.switch_to_default_content() iframe 밖으로 나오기 # iframe 안쪽을 한번 클릭 driver.find_element(By.CSS_SELECTOR, "#_pcmap_list_scroll_container").click() # 로딩된 데이터 개수 확인 lis = driver.find_elements(By.CSS_SELECTOR, "li.UEzoS") before_len = len(lis) while True: # 맨 아래로 스크롤 내린다 driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) # 아무 태그나 선택하기 위해 body를 선택하는 것 # 스크롤 사이 페이지 로딩 시간 time.sleep(1.5) # 스크롤 후 로딩된 데이터 개수 확인 lis = driver.find_elements(By.CSS_SELECTOR, "li.UEzoS") after_len = len(lis) # 로딩된 데이터 개수가 같다면 반복 멈춤 if before_len == after_len: break before_len = after_len # 데이터 기다리는 시간을 0으로 만들어줌 (데이터가 없어도 빠르게 넘어감) driver.implicitly_wait(0) rank = 1 for li in lis: # 광고상품 아닌것만 if len(li.find_elements(By.CSS_SELECTOR, "svg.dPXjn")) == 0: # 별점이 있는 것만 크롤링 if len(li.find_elements(By.CSS_SELECTOR, "span.h69bs.orXYY")) > 0: # 가게명 name = li.find_element( By.CSS_SELECTOR, "span.TYaxT").text # 별점 star = li.find_element(By.CSS_SELECTOR, ".h69bs.orXYY").text.split('\n')[1] print(rank, name, star) ws.append([rank, name, float(star)]) rank = rank + 1 wb.save(f"CRAWLING심화\ch7.네이버지도크롤링\\{keyword}.xlsx") # 새롭게 오픈한 가게이면 if len(li.find_elements(By.CSS_SELECTOR, "span.h69bs.DjPAB")) > 0: try: # 방문자 리뷰수 visit_review = li.find_element(By.CSS_SELECTOR,"span.h69bs:nth-child(3)").text except: visit_review = "0" # 새로 오픈한 가게가 아니면 else: try: visit_review = li.find_element(By.CSS_SELECTOR,"span.h69bs:nth-child(2)").text except: visit_review = "0"네이버 지도가 바뀌어서 리뷰가 바뀌었습니다.위와 같이 새로 오픈한 가게로 해서 코드를 작성했는데 작동하지 않습니다. 어떻게 코드를 구성하면 좋을까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
open api 사용 강의 중 질문이 있습니다.
알려주신 업데이트된 openapi 강의를 유튜브에서 보고 따라하였는데 에러가 발생하여 문의드립니다. 발생한 에러는 이렇습니다. 혹시 크레딧이 없어서 발생하는 문제일까요?현재 크레딧 창을 보면 이렇게 되어 있네요..
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
새로운 탭에서 설정 유지
핵심 노하우가 담긴 좋은 강의 감사합니다.링크를 클릭하면 새로운 탭이 열리는 경우가 있는데요. 그때는 설정한 user agent값이 없어지더라고요. 이걸 해결할 방법이 잘 떠오르지 않습니다. 해결책이 있을까요?
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
객체지향 출력 순서
제가 생각했을때는 print(argument1, argument2) 그 다음에 self.name이면1 2blue 사각형2 3yellow 사각형 순서로 출력이 되어야 할 것 같은데, 예상 밖이네요..혹시 이렇게 순서가 되는 이유가 있나요?
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
데이터 구조 (set) 질문있습니다
안녕하세요set으로 한개의 data만 저장을 하려고 할때{} 없이 변수 = set('data1') 이런 식으로 입력한다고하셨는데 jupyter notebook 에서 set('apple')을 실행한 결과 사진과 같이 {'a', 'e' ,'l' ,'p'} 로 분해되던데 왜그런걸까요??
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
자동로그인 문의
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: goog:chromeOptionsfrom invalid argument: unrecognized chrome option: excludesweitchesStacktrace: 이런 메세지가 뜨고 자동로그인 창이 안나오는데..왜 그런지 모르겠어요 ㅠㅡㅠ
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
함수 관련으로 질문이 있습니다.
안녕하세요, 함수 문제를 풀어보다가, 문의사항이 있어서 질문 올립니다.67, 68번 예시와 다르게 노출되어, 원인이 무엇인 지 알고 싶습니다. Excercise 67. 함수 문제를 아래 방식으로 풀어봤는데, 결과 값에 'None' 값도 같이 출력되는지 알고 싶습니다. Excercise 68. 역시 풀어보다가, 똑같이 'None' 값이 나와서 이유를 알고 싶습니다! 감사합니다.
-
해결됨파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
mouse listener 관련해서 질문 드립니다.
안녕하세요,wsl2 ubuntu 환경에서 스크롤 녹화하는 실습 코드를 실행하는데 클릭하거나 스크롤을 해도 출력이 안되고 파일에 저장이 안되고 있습니다. 혹시 pynput라이브러리 리눅스 환경에서 사용하려면 추가로 설정 해야 하는 부분이 있을까요?
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
NoSuchElementException 이라고 뜹니다
안녕하세요 선생님 ~ 질문있습니다.아래의 코드를 실행하니 NoSuchElementException이라고 뜹니다. 제가 생각하기엔 큰이미지를 다운로드 하는 과정에서 첫번째 사진만 저장되고 그 이후에 저런 메세지가 나옵니다.CSS 선택자가 잘못된 것 같은데 해결을 못하고 있습니다 ㅠㅠ from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time import os import urllib.request import pyautogui # 크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager keyword = pyautogui.prompt("검색어를 입력하세요.") if not os.path.exists(f'CRAWLING심화\ch4.구글이미지크롤링\{keyword}') == True: os.mkdir(f'CRAWLING심화\ch4.구글이미지크롤링\{keyword}') # 브라우저 꺼짐 방지 코드 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메세지 차단 chrome_options.add_experimental_option('excludeSwitches', ["enable-logging"]) # 최신 버전의 ChromeDriver 경로를 자동으로 다운로드하거나 검색 service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) # url 검색 url = f"https://www.google.com/search?q={keyword}&sca_esv=581612012&tbm=isch&sxsrf=AM9HkKnRu6DCGGz23e29xT4BSB7Hq95zgA:1699754235522&source=lnms&sa=X&ved=2ahUKEwiboaf7rb2CAxWJfd4KHWkWA9MQ_AUoAXoECAQQAw&biw=1552&bih=737&dpr=1.65" # 웹 페이지가 로딩될때까지 10초 기다림 driver.implicitly_wait(10) # 화면 최대화 driver.maximize_window() driver.get(url) # 스크롤 전 높이 before_h = driver.execute_script("return window.scrollY") # 무한 스크롤 while True: # 맨 아래로 스크롤 내린다. driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) # 스크롤 사이 페이지 로딩 시간 time.sleep(1) # 스크롤 후 높이 after_h = driver.execute_script("return window.scrollY") if after_h == before_h: break before_h = after_h # 썸네일 이미지 태크 추출 imgs = driver.find_elements(By.CSS_SELECTOR, ".rg_i.Q4LuWd") for i, img in enumerate (imgs, 1): # 이미지를 클릭해서 큰 사이즈 찾기 # 클릭하다보면 element click intercepted 에러가 등장 # javascript로 클릭을 직접 하도록 만들어주면 된다 driver.execute_script("arguments[0].click();", img) img.click() time.sleep(1) # 큰 이미지 주소 추출 target = driver.find_element(By.CSS_SELECTOR, 'img.sFlh5c.pT0Scc.iPVvYb') img_src = target.get_attribute('src') opener = urllib.request.build_opener() opener.addheaders = [('User-Agent', 'Mozila/5.0')] urllib.request.install_opener(opener) # 이미지 다운로드 urllib.request.urlretrieve(img_src, f'CRAWLING심화\ch4.구글이미지크롤링\{keyword}\{keyword}{i}.jpg') print(f'img {i}개 : {target}')
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
json() 함수와 BeautifulSoup 의 차이
requests.get() 메소드를 통해 얻은 res 라는 변수를res.json() 메소드를 이용해 얻은 리턴값과 BeatifulSoup(res.content, 'html.parser') 를 통해 얻은 값은 어떤 차이가 있을까요?코딩을 통해 직접 도출해본 결과 값은 비슷하게 나오는 것 같은데, 이전 강의까지는 계속 BeatifulSoup를 이용하다가 이번 강의에서부터는 json()을 이용하는 이유는 무엇인가요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
chat gpt api 사용법관련 문의드립니다.
현재 강의 후 openai API 내용이 업데이트 되었는지 모르겠지만 강의 내용과 좀 다른 부분이 있어서 문의드립니다.사이트 코딩강의 코딩import 부분과 api_key 넣는 부분 등 코딩이 대체적으로 좀 다르네요.