무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결이것이 진짜 크롤링이다 - 기본편
뉴스 페이지에 페이지 번호가 없는데 어떻게 가져오나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.네이버 뉴스 페이지를 보니 페이지 번호가 없고 스크롤하면 다음 뉴스가 계속해서 나오는 것 같은데 어떻게 가져오나요?
- 미해결이것이 진짜 크롤링이다 - 기본편
네이버 쇼핑에 팝업창이 뜨기 시작했어요 도와주세요 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님하기 이미지처럼 그저께부터 팝업이 뜨기 시작해 검색창 클릭이 단계로 안넘어갑니다 ㅠㅠ배운 내용대로 코드를 한번 만들어보았는데 작동이 되질 않내요 ㅠㅠ다른 방법이 있을까요...?browser.find_element(By.CSS_SELECTOR,"._searchInput_search_input_QXUFf").click()
- 미해결이것이 진짜 크롤링이다 - 기본편
셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.
안녕하세요~ 셀레니움 강의를 따라가던 중,네이버 창을 열고 브라우저 꺼짐 방지시켜주는 코드까지 입력을 하고 실행했는데네이버 창이 떴다가 곧 '주의 요함' 이라고 뜨는 Chrome 창으로 전환이 되어 버립니다.위에 팝업으로 'Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다' 라고도 떠 있습니다.해결 방안이 있을까요?
- 미해결이것이 진짜 크롤링이다 - 기본편
낮은 가격순을 클릭하는 문을 추가하고싶습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 상품 검색 후 '낮은 가격순'을 클릭하고 수집하고싶습니다.
- 미해결이것이 진짜 크롤링이다 - 기본편
pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램
pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 나옵니다. 그래서 인터넷에서 떠돌아다니는 걸 아래와 같이 해서 해봐도 되지 않습니다. 환경변수 설정이 되어 있습니다. 동시에 위처럼 오류가 나는데요. pip를 실행할수가없습니다. 도와주세요. ㅠ.ㅠ
- 미해결이것이 진짜 크롤링이다 - 기본편
이런오류는 어떤 오류인가요
[24532:15216:0226/173731.184:ERROR:policy_logger.cc(157)] :components\enterprise\browser\controller\chrome_browser_cloud_management_controller.cc(161) Cloud management controller initialization aborted as CBCM is not enabled. Please use the --enable-chrome-browser-cloud-management command line flag to enable it if you are not using the official Google Chrome build.DevTools listening on ws://127.0.0.1:58547/devtools/browser/ef895699-d3de-47d1-8fbc-d77db72d47e1
- 미해결이것이 진짜 크롤링이다 - 기본편
창이 두개떠요/쇼핑검색도 안되요 ㅜ
#검색하기 search = browser.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_3CUDs") search.click() search.send_keys("아이폰14")
- 해결됨이것이 진짜 크롤링이다 - 기본편
약간 변태(?)같지만 해당 코드를 깔끔하게 함수로 리팩토링해보았습니다
import openpyxl import requests from bs4 import BeautifulSoup # stock_data파일을 불러와서 B2, B3, B4에 현재가를 저장해보자. fpath = ( r"C:\Users\UserName\OneDrive\바탕 화면\웹 스크래핑 연습\new_project\02_파이썬엑셀다루기\stock_data.xlsx" ) wb = openpyxl.load_workbook(fpath) ws = wb.active # 현재 활성화된 엑셀시트를 선택한다 # ws = wb["주식크롤링"] def stock_crawl(codes): row_start = 2 for code in codes: url = f"https://finance.naver.com/item/sise.naver?code={codes[code]}" response = requests.get(url) html = response.text soup = BeautifulSoup(html, "html.parser") price = soup.select_one("#_nowVal").text # str -> int price = int(price.replace(",", "")) # 크롤링한 현재가를 엑셀에 저장(3번 반복) ws[f"B{row_start}"] = price row_start += 1 # 엑셀 저장하기 wb.save(fpath) stock_crawl({"엔씨소프트": "036570", "삼성전자": "005930", "네이버": "035420"})크롤링 재밌네요 ㅎㅎ
- 미해결이것이 진짜 크롤링이다 - 기본편
과제 답안을 보지않고 스스로 구글링해서 만든 웹 크롤링 프로그램(10페이지 단위) 코드입니다.
import requests from bs4 import BeautifulSoup import urllib # 입력받은 input을 url로 변환 def web_crawler(keyword_input, pages=1): # headers headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } # input -> url 변환 keyword = urllib.parse.quote(keyword_input) print("파이썬 문자열을 url 코드로 변환:", keyword) base_url = "https://www.google.com/" # 10페이지까지 크롤링 for page in range(pages): start = page * 10 search_url = f"{base_url}/search?q={keyword}&hl=ko&gl=KR&ceid=KR%3Ako&start={start}" print("\n검색어와 조합한 url:", search_url) # soup을 이용한 웹 크롤링 작업(headers 매핑 중요!) response = requests.get(search_url, headers=headers) html = response.text # 응답 상태 확인 if response.status_code == 200: soup = BeautifulSoup(html, "html.parser") # h3 제목 추출 titles = soup.find_all("h3") for title in titles: print(title.get_text()) else: print("에러:", response.status_code) web_crawler("크롤링 잘하고 싶다", 1)아무래도 구글은 무한스크롤 형식이라 페이지 별로 크롤링하기가 까다롭네요
- 미해결이것이 진짜 크롤링이다 - 기본편
자동 로그인시 자동입력방지문자 페이지로 연결
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 다른 에러는 안뜨는거보니 코드는 잘 돌아가는거 같고, time.sleep()의 초를 늘려도 계속 자동입력 방지문자 페이지가 뜨면서 로그인이 안됩니다 ㅠ 뭐가 문제일까요.. 네이버 정책이 바뀐걸까요? from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.chrome.options import Optionsfrom selenium.webdriver.common.by import By# 크롬 드라이버 자동 업데이트from webdriver_manager.chrome import ChromeDriverManagerimport timeimport pyautoguiimport pyperclip# 브라우저 꺼짐 방지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(5) # 웹페이지가 로딩될 때까지 5초 기다림driver.maximize_window() # 화면 최대화driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/")# 아이디 입력창id = driver.find_element(By.CSS_SELECTOR, "#id")id.click()pyperclip.copy(" ")pyautogui.hotkey("ctrl", "v")time.sleep(5)# 비밀번호 입력창pw = driver.find_element(By.CSS_SELECTOR, "#pw")pw.click()pyperclip.copy(" ")pyautogui.hotkey("ctrl", "v")time.sleep(5)# 로그인 버튼login_btn = driver.find_element(By.CSS_SELECTOR, "#log\.login")login_btn.click()
- 미해결이것이 진짜 크롤링이다 - 기본편
업데이트된 코드 오류 ? 제품 리스트 가져오기 실패
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 실전 강의를 결제했습니다 실전 강의 전에 기본 강의 부터 듣고 있었는데, 네이버 상품 무안 스크롤 편을 보다가 업데이트된 코드를 그대로 작성했습니다 페이지에 있는 제품 리스트를 모두 가져와야 하는데, 제품 리스트 딱 하나만 가져옵니다 어떻게 해야 할까요
- 미해결이것이 진짜 크롤링이다 - 기본편
셀레니움 설정 강의에서 에러가 납니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.chrome.options import Options# 크롬 드라이버 자동 업데이트from webdriver_manager.chrome import ChromeDriverManager# 브라우저 꺼짐 방지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.get("https://www.naver.com")\\여기까지 코드입니다. (그대로 따라썼는데 안되어서 강사님 다른 답변에서 직접 올려주신 코드 복사 붙여넣기 했습니다..!)selenium과 webdriver 모두 pip install 이용해서 설치했구요, selenium은 4.16.0, webdriver-manager는 4.0.1입니다. 에러 메시지는 아래와 같습니다.보기 힘드실까 하여 아래에 AttributeError부분을 써놓겠습니다. determined_browser_version = ".".join(determined_browser_version.split(".")[:3])AttributeError: 'NoneType' object has no attribute 'split'
- 미해결이것이 진짜 크롤링이다 - 기본편
팝업이 안뜹니다. AssertionError: Tkinter is required for pymsgbox
AssertionError: Tkinter is required for pymsgboxpip install tk 도 해봤지만 자꾸 에러메시지가 뜹니다. 구글링 해봐도 답이 안나와서 질문드립니다.
- 미해결이것이 진짜 크롤링이다 - 기본편
자동로그인 문의
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: goog:chromeOptionsfrom invalid argument: unrecognized chrome option: excludesweitchesStacktrace: 이런 메세지가 뜨고 자동로그인 창이 안나오는데..왜 그런지 모르겠어요 ㅠㅡㅠ
- 미해결이것이 진짜 크롤링이다 - 기본편
셀레니움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로 코드를 적용해보았는데불필요한 라이브러리나 코드을 추가한게 있을까요?..
- 미해결이것이 진짜 크롤링이다 - 기본편
현재 주식가를 불러오지 못 하고있습니다.
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여서 허용같은데... 무슨 문제인지 알려주시면 감사하겠습니다 ㅠㅠ
- 미해결이것이 진짜 크롤링이다 - 기본편
네이버쇼핑 크롤링 시 이미지도 가지고 오고 싶어요.
네이버쇼핑 크롤링 할 때 상품이미지도 크롤링 하고 싶습니다.for item in items : 안에 아래 소스를 추가 하였는데 동일한 이미지 URL만 찍힙니다.상품명 등과는 다르게 작동하는 것인지 도움 부탁 드립니다. image_element = browser.find_element(By.CSS_SELECTOR, 'div.product_item__MDtDF img')\ image_url = image_element.get_attribute('src')
- 해결됨이것이 진짜 크롤링이다 - 기본편
광고 상품 크롤링이 가능한가요?
안녕하세요 선생님! 제가 따라해보니까 네이버 쇼핑에 광고 상품들도 포함되어 있어서 광고 상품 8개 + 일반 상품 40개 정도 한 페이지에 포함되는 것 같은데 일반 상품은 코드에 써주신 듯이 product_title__Mmw2K 클래스를 가지고 있고, 광고 상품은 adProduct_title__amInq 클래스를 가지고 있습니다. 광고 상품도 포함해서 크롤링 할 수 있는 방법이 있을까요?
- 해결됨이것이 진짜 크롤링이다 - 기본편
브라우저가 꺼집니다..
선생님 유익한 강의 정말 잘 듣고 있습니다..!셀레니움 가이드 강의에서 브라우저 꺼짐 방지 코드도 알려주셨는데 똑같이 따라해도 코드가 전부 실행되고 로그인이 완료되면 브라우저가 자동으로 꺼지는데 왜 그럴까요..?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 webdriver_manager.chrome import ChromeDriverManager import time import pyautogui import pyperclip #브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) #불필요한 에러 메시지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) service = Service(excutable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) #웹페이지 주소로 이동 driver.implicitly_wait(5) #웹페이지가 로딩될 때까지 5초는 기다림 driver.maximize_window() #화면 최대화 driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/") #아이디 입력창 id = driver.find_element(By.CSS_SELECTOR, "#id") id.click() pyperclip.copy("a06015") pyautogui.hotkey("ctrl", "v") time.sleep(2) # id.send_keys("a06015") #비밀번호 입력창 pw = driver.find_element(By.CSS_SELECTOR, "#pw") pw.click() pyperclip.copy("") pyautogui.hotkey("ctrl", "v") time.sleep(2) # pw.send_keys("") #로그인 버튼 login_btn = driver.find_element(By.CSS_SELECTOR, "#log\.login") login_btn.click()
- 미해결이것이 진짜 크롤링이다 - 기본편
pyautogui 설치시 이번에는 오류 메시지가 바뀌었네요... 그리고 다른 방법들도 다 해봤는데 안되네요
pyautogui 설치시 이번에는 오류 메시지가 바뀌었네요... 그리고 다른 방법들도 다 해봤는데 안되네요 방화벽을 끄는 방법과 직접 다운로드 받아서 설치하는 것까지 다 해봤는데아래에 이미지 처럼 WinError 5 액세스 거부가 되었네요. 이 에러가 윈도우 운영체제 버전과 상관이 있나요? 제가 사용하는 윈도우가 11인데 요즘 윈도우가 버전이 높아지면서 안되는게 제법 많아진 것 같아서요..어떻게 해결해야 될지 정말 막막하네요... 아니면 pyautogui를 빼고 진행을 해야 할지 고민을 해봐야 겠네요.. ㅠㅠ 꼭 좀알려주세요...