묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
함수 관련으로 질문이 있습니다.
안녕하세요, 함수 문제를 풀어보다가, 문의사항이 있어서 질문 올립니다.67, 68번 예시와 다르게 노출되어, 원인이 무엇인 지 알고 싶습니다. Excercise 67. 함수 문제를 아래 방식으로 풀어봤는데, 결과 값에 'None' 값도 같이 출력되는지 알고 싶습니다. Excercise 68. 역시 풀어보다가, 똑같이 'None' 값이 나와서 이유를 알고 싶습니다! 감사합니다.
-
해결됨파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
mouse listener 관련해서 질문 드립니다.
안녕하세요,wsl2 ubuntu 환경에서 스크롤 녹화하는 실습 코드를 실행하는데 클릭하거나 스크롤을 해도 출력이 안되고 파일에 저장이 안되고 있습니다. 혹시 pynput라이브러리 리눅스 환경에서 사용하려면 추가로 설정 해야 하는 부분이 있을까요?
-
해결됨이것이 진짜 크롤링이다 - 실전편
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 넣는 부분 등 코딩이 대체적으로 좀 다르네요.
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
셀레니움4로 실습을 해보았는데 불필요한 코드가 포함되어있을까요??
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By import time from selenium.webdriver.common.keys import Keys # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메시지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-looging"]) # 브라우저 생성 service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service) # 웹 사이트 열기 driver.maximize_window() driver.get("https://www.naver.com") driver.implicitly_wait(10) # 로딩이 끝날 때까지 10초는 기다림 # 쇼핑 메뉴 클릭 driver.find_element(By.CSS_SELECTOR, "#shortcutArea > ul > li:nth-child(4) > a").click() time.sleep(2) # 새창을 바라보게 만들기 new_window = driver.window_handles[1] driver.switch_to.window(new_window) # 검색창 클릭 search = driver.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs") search.click() # 검색어 입력 search.send_keys("아이폰 13") search.send_keys(Keys.ENTER) # 브라우저 종료 방지 - 입력 대기 input("로그인 성공 후 프로그램을 종료하려면 엔터 키를 눌러주세요.") # 브라우저 종료 driver.quit() 안녕하세요.이번 강의를 참고하여 셀레니움4로 코드를 적용해보았는데불필요한 라이브러리나 코드을 추가한게 있을까요?..
-
해결됨이것이 진짜 크롤링이다 - 실전편
쿠팡 첫페이지 관련 href 오류가 뜹니다.
강의노트에 올려주신 코드를 그대로 복붙해서 실행시켰는데,C:\CRAWLLING> cmd /C "C:\Users\libra_erv8ij1\AppData\Local\Programs\Python\Python312\python.exe c:\Users\libra_erv8ij1\.vscode\extensions\ms-python.python-2023.20.0\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher 1693 -- "c:\CRAWLLING\CRAWLING 심화\ch3. 쿠팡크롤링\01.첫번째페이지크롤링.py" "Traceback (most recent call last): File "c:\CRAWLLING\CRAWLING 심화\ch3. 쿠팡크롤링\01.첫번째페이지크롤링.py", line 20, in <module> sub_url = "https://www.coupang.com" + link.attrs['href'] ~~~~~~~~~~^^^^^^^^KeyError: 'href'href 관련 오류가 나옵니다. 왜그러는걸까요?
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
현재 주식가를 불러오지 못 하고있습니다.
import requests from bs4 import BeautifulSoup url = "https://finance.naver.com/item/main.naver?code=000660" res = requests.get(url).text soup = BeautifulSoup(res, 'html.parser') price = soup.select_one("#_nowVal") print(price)태그는 강의와 같이 그대로인데 실행하면 None이라고 뜹니다... 네이버에서 크롤링을 막아놓은건지 저번에도 웹툰크롤링 할때도 위와같이 None이 떠서 포기했었는데 뭐가 문제인지 아직 파악을 못하겠네요.. 시세부분은 Allow여서 허용같은데... 무슨 문제인지 알려주시면 감사하겠습니다 ㅠㅠ
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
print 출력 시 오류
print (age, name)은 정상 출력되어지나print (age, name, foot_size) 입력시 출력이 되지 않습니다.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
쿠팡 크롤링시 연결이 비공개로 설정되어 있지 않습니다. 경고문 발생하였습니다.
크롤링을 하게 되면 크롤링한 사이트의 정보는 가져오는데 링크를 클릭하면 "연결이 비공개로 설정되어 있지 않습니다." 이렇게 발생합니다. 이게 쿠팡에서 크롤링을 막은 것인지 아니면 어떠한 문제 때문에 그런건가요? 그리고 해결 방법은 무엇이 있을까요?인터넷 검색해보니 여러가지 답변이 있는데 맞는 방법인지 잘 몰라서 문의 드립니다.
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
데이터 비교시 데이터 불일치
오래전에 강의듣다 포기하고 다시 시작하는 중입니다.많은도움 감사합니다. 삼성전자 주식데이터와 금리와의 비교데이터를 만들다 해결이 되지 않아 질문 드립니다.삼성전자stock_code= fdr.DataReader(stock_code, stock_start_data, stock_end_data)stock_code.tail(1) 금리pd.read_csv("한국은행 기준금리 및 여수신금리_23054821.csv", encoding="cp949")이걸합치 날짜가 아닌 3439로 출력이 됩니다. 두게의 데이터를 합쳐 관계를 분석하고 싶은데 3439으로 출력이되면서 그래프가 두게로 표시가됩니다날짜로 변경하여 그래프가 출력되도록 하고싶은데 방법을 모르겠습니다. 만들고 싶은 그래프(아래)
-
미해결일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
5강 처음부터 전혀 따라 갈수가 없어요
필수라이브러리를 공유드린 소스 코드에서 붙여 넣으라는데 노트에 적힌 주소 중 어떤것인가요? 너무 불친절하게 가르치는거 아닌가요? 소스코드 정보를 열었는데 라이브러리는 어디에서 어떻게 하는것인지 너무 불친절 하시네요
-
해결됨이것이 진짜 크롤링이다 - 실전편
html에서 가져오지 못하는 부분이 있어 질문 드립니다.
import requests from bs4 import BeautifulSoup headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36' } url = 'https://new.land.naver.com/complexes/8928?ms=37.2110479,127.0941727,16&a=APT:ABYG:JGC:PRE&b=B1&e=RETAIL&ad=true&articleNo=2350848148' article_response = requests.get(url, headers=headers) html = article_response.text soup = BeautifulSoup(html, 'html.parser') items = soup.select(".info_title") #Select의 결과는 리스트자료형 print(items)안녕하세요. 강의 다 들은지는 꽤 됬는데 beautifulsoup을 오랜만에 사용하려니 막혀서 질의드립니다. ㅠurl의 네이버 부동산에 들어가서 해당 매물의 중개소 정보를 가져오려고 하는데요.분명 크롬 개발자도구에서 info_title 클래스의 div 태그가 있음에도 아무것도 파싱되지 않습니다. ㅠ다른 클래스로 지정시 파싱은 잘 되서 코드에는 문제가 없는거 같은데 유독 저것만 왜 안나오는 걸까요 ㅠ
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
Javascript와 iframe이 포함된 url cawling시 문제점
안녕하세요.Javascript나 iframe등이 포함된 url을 crawling할때 devTools에서는 분명히 element가 존재하는데Selenium WebDriver의 page_source에는 추가된 element는 없고 JavaScript와 기타 code만 보이는 문제가 있습니다. Javascript나 iframe등이 실행되고 난 결과의 html,즉 element가 전부 업데이트된 것을 받아 볼수 있는 방법이 없을까요?sleep,wait등을 충분히 줬는데도 해결이 안되네요. 감사합니다. ^^
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
숫자야구 코드를 짜 봤는데 뭔가 이상합니다.
# v2: 안 보고 만들기 (23.11.21)from random import randintfrom os import systemanswer = []num = str(randint(0, 9))for i in range(3): while num in answer: num = str(randint(0, 9)) answer.append(num)strikes = 0balls = 0system('cls')while strikes < 3: user_input = str(input("3자리 숫자를 입력해 주세요.")) if len(user_input) != 3: print("3자리 자연수를 입력해주세요.") continue if not user_input.isdigit(): print("문자 말고 숫자를 입력해주세요.") continue if user_input[0] == user_input[1] or user_input[1] == user_input[2] or user_input[0] == user_input[2]: print("중복된 숫자 없이 입력해주세요.") continue strikes = 0 balls = 0 # 숫자 비교 for i in user_input: for j in answer: if i in answer and i == j: strikes += 1 if i in answer and i != j: balls += 1 if strikes != 3: print(f"{strikes} 스트라이크, {balls} 볼") else: print("성공!") 37, 39에서 저는 i in answer를 써 봤는데요. 막 2 스트라이크 4 볼이 나오고 그런 현상이 생깁니다ㅠㅠ
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
45번 문제 질문 있습니다.
안녕하세요. 45번 문제 풀어보는데 달러로는 잘 나오는데위안이나 엔도 달러값으로만 나오는것 같습니다.ㅜㅜ
-
미해결업무 자동화를 위한 파이썬 pyautogui, beautifulsoup 크롤링 기초
크롤링 실행시 멈춤
쿠팡 크롤링을 진행하려고합니다 처음에 확인을 위해 실행 시켜보았는데 input으로 제품 검색하면 목록이 뜨는겁니다. 하지만 입력하면 저상태에서 그냥 멈춰있습니다. 다시 실행도 안되구요 디버깅만 됩니다. 터미널창을 다 지우고 해보아도 그대로입니다. 어떤 문제일까요 ? 현재까지 쓴 코드이고 이것을 실행시키면 저 위와 같이 됩니다.한 100번 실행 본다는 가정하에는 1번씩은 불러올때도 있습니다.
-
미해결이것이 진짜 크롤링이다 - 실전편
NoSuchElementException Stacktrace 에러입니다.
진행 중 에러가 나왔습니다.. 해당 부분에서 어떻게 잘못되었는지 파악을 못해서 글 남깁니다.. File "c:\Users\cksth\OneDrive\바탕 화면\Career\크롤링\심화3\09.click.py", line 71, in <module> raise exception_class(message, screen, stacktrace)selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"img.sFlh5c.pT0Scc.iPVvYb"} (Session info: chrome=119.0.6045.124); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exceptionStacktrace: 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 urllib.request import time import pyautogui import os # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 크롬창 안뜨게 함 # chrome_options.add_argument('--headless') # headless 모드 활성화 # chrome_options.add_argument('--disable-gpu') # GPU 가속 비활성화 # 불필요 메세지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 크롬 드라이버 자동 업데이트 browser = webdriver.Chrome(options=chrome_options) keyword = pyautogui.prompt('검색어를 입력하세요.') cnt = 0 # 폴더 만들기 (이미 존재하면 += 1) while True: cnt += 1 folder_path = f'크롤링/심화3/{keyword}{cnt}모음' if not os.path.exists(folder_path): os.mkdir(folder_path) break path = 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' # 구글 browser.implicitly_wait(3) browser.maximize_window() browser.get(path) before_h = browser.execute_script("return window.scrollY") # 무한스크롤 while True: # 맨 아래로 스크롤을 내림 browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END) time.sleep(5) # 스크롤 후 높이 after_h = browser.execute_script("return window.scrollY") # 스크롤 높이가 맨 아래와 같다면 무한루프 탈출 if after_h == before_h: print('OKOK') break # 스크롤 높이 업데이트 before_h = after_h # 썸네일 이미지 태그 추출 imgs = browser.find_elements(By.CSS_SELECTOR, '.rg_i.Q4LuWd') for i, img in enumerate(imgs, 1): # 이미지 클릭 후 큰 사이즈 찾음 # 클릭하면 element click intercepted -> JS 로 직접 클릭 유도 browser.execute_script('arguments[0].click();', img) time.sleep(1) # 큰 이미지 주소 추출 target = browser.find_element(By.CSS_SELECTOR, 'img.sFlh5c.pT0Scc.iPVvYb') img_src = target.get_attribute('src') # 에러 해결중 # if i == 1: # target = browser.find_elements(By.CSS_SELECTOR, 'img.sFlh5c.pT0Scc.iPVvYb')[0] # else: # target = browser.find_elements(By.CSS_SELECTOR, 'img.sFlh5c.pT0Scc.iPVvYb')[1] # img_src = target.get_attribute('src') # urllib.error.HTTPError: HTTP Error 403: Forbidden 해결방안 3줄 opener = urllib.request.build_opener() opener.addheaders = [('User-Agent', 'Mozila/5.0')] urllib.request.install_opener(opener) # 이미지 저장 try: urllib.request.urlretrieve(img_src, f'크롤링/심화3/{keyword}{cnt}모음/{keyword}{i}.png') except: pass print(f'img {i}개: {target}') print('\nDvlp.H.Y.C.Sol\nJason')
-
미해결이것이 진짜 크롤링이다 - 실전편
구글 큰이미지 크롤링 IndexError입니다.
안녕하세요. 이전 에러를 해결하고 다시 코드를 잡기 시작했습니다...에러 내용은 IndexError: list index out of range 입니다.다른분이 올려주신 글을 읽어보기도 했는데 제 코드에서는 문제점이 무엇인지 잘 모르겠습니다.두번째 인덱스가 없기 때문인거같은데큰 그림만 가져오고싶습니다 ㅠ 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 urllib.request import time import pyautogui import os # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 크롬창 안뜨게 함 chrome_options.add_argument('--headless') # headless 모드 활성화 chrome_options.add_argument('--disable-gpu') # GPU 가속 비활성화 # 불필요 메세지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 크롬 드라이버 자동 업데이트 browser = webdriver.Chrome(options=chrome_options) keyword = pyautogui.prompt('검색어를 입력하세요.') cnt = 0 # 폴더 만들기 (이미 존재하면 += 1) while True: cnt += 1 folder_path = f'크롤링/심화3/{keyword}{cnt}모음' if not os.path.exists(folder_path): os.mkdir(folder_path) break path = 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' # 구글 browser.implicitly_wait(3) browser.maximize_window() browser.get(path) before_h = browser.execute_script("return window.scrollY") # 무한스크롤 while True: time.sleep(5) # 맨 아래로 스크롤을 내림 browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END) # 스크롤 후 높이 after_h = browser.execute_script("return window.scrollY") # 스크롤 높이가 맨 아래와 같다면 무한루프 탈출 if after_h == before_h: print('OKOK') break # 스크롤 높이 업데이트 before_h = after_h # 썸네일 이미지 태그 추출 imgs = browser.find_elements(By.CSS_SELECTOR, '.rg_i.Q4LuWd') for i, img in enumerate(imgs, 1): # 이미지 클릭 후 큰 사이즈 찾음 img.click() time.sleep(1) # 큰 이미지 주소 추출 if i == 1: target = browser.find_elements(By.CSS_SELECTOR, 'img.sFlh5c.pT0Scc.iPVvYb')[0] else: target = browser.find_elements(By.CSS_SELECTOR, 'img.sFlh5c.pT0Scc.iPVvYb')[1] # IndexError: list index out of range img_src = target.get_attribute('src') # urllib.error.HTTPError: HTTP Error 403: Forbidden 해결방안 3줄 opener = urllib.request.build_opener() opener.addheaders = [('User-Agent', 'Mozila/5.0')] urllib.request.install_opener(opener) # 이미지 저장 try: urllib.request.urlretrieve(img_src, f'크롤링/심화3/{keyword}{cnt}모음/{keyword}{i}.png') except: pass print(f'img {i}개: {target}') print('\nDvlp.H.Y.C.Sol\nJason')
-
미해결내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
네이버 부동산 매물 크롤링 오류
해당 커리큘럼 수행 중 질문드립니다.개포동의 모든 아파트 단지 매물을 크롤링하고싶은데,강사님꼐서 하신방법을 해보니 화면에 떠있는 마커들의 단지들만 크롤링해오는것 같습니다. 지도를 줌아웃 상태에서 complex_id 를 len 찍어보니 계속 변하네요.해당부분 확인부탁드립니다.감사합니다.