크롬드라이버 버전(120.0.6099.130(공식 빌드) (64비트) 에 맞게 웹드라이버를 다운로드( https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.109/win64/chromedriver-win64.zip) 해서, app.py 경로에 가져왔고요. 강의 내용과 동일하게 코드를 입력했으나 경로를 찾지 못하는 듯 합니다. 셀레니움이 20년에 비해 많이 지나서 최신 버전이라 강의내용대로 하면 구현이 안되는 걸까요?
강의에서는 class name이 a.prod -brand-name로 잘 나오는데, 제가 사이트에서 확인할 때는 .prod-brand-name brandshop-link 으로 보입니다. 실행시켜보면 a.pro d-brand-name 이 맞고 .prod-brand-name brandshop-link 는 아닙니다. 직접 찾아볼 때는 .prod-brand-name이 안보이는데 어떻게 찾을 수 있을까요? CSS 선택자를 잘 못 정하겠습니다.ㅠㅠ
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 문의하기를 이용해주세요.
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와 맞지 않다면 어떻게 공부하는게 맞을까요?
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 이 맞지 않나요?
안녕하세요 선생님 2가지의 질문이 있습니다. 아래와 같이 코드를 구성했습니다. 1. 키워드로 강남역 맛집 / 이태원 술집으로는 엑셀파일로 저장이 잘 되는데 "행궁동 맛집"이라고 치면 아래와 같은 오류가 출력됩니다. 왜이러는 걸까요? 제 생각엔 "이태원 술집" , "강남역 맛집"에서는 iframe 안쪽을 한번 클릭 하는 것이 실행이 되는 것 같은데 "행궁동 맛집", "용산역 맛집"에서는 검색어 입력 후 iframe 클릭 하지 않고 바로 스크롤이 되는 것 같습니다. C:\CRAWLLING>C:/Users/libra_erv8ij1/AppData/Local/Programs/Python/Python312/python.exe c:/CRAWLLING/CRAWLING심화/ch7.네이버지도크롤링/ 06.데이터저장.py c:\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 defined 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 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" 네이버 지도가 바뀌어서 리뷰가 바뀌었습니다. 위와 같이 새로 오픈한 가게로 해서 코드를 작성했는데 작동하지 않습니다. 어떻게 코드를 구성하면 좋을까요?
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요 set으로 한개의 data만 저장을 하려고 할때 {} 없이 변수 = set('data1') 이런 식으로 입력한다고하셨는데 jupyter notebook 에서 set('apple')을 실행한 결과 사진과 같이 {'a', 'e' ,'l' ,'p'} 로 분해되던데 왜그런걸까요??
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요, 함수 문제를 풀어보다가, 문의사항이 있어서 질문 올립니다. 67, 68번 예시와 다르게 노출되어, 원인이 무엇인 지 알고 싶습니다. Excercise 67. 함수 문제를 아래 방식으로 풀어봤는데, 결과 값에 'None' 값도 같이 출력되는지 알고 싶습니다. Excercise 68. 역시 풀어보다가, 똑같이 'None' 값이 나와서 이유를 알고 싶습니다! 감사합니다.