묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
영상 3초에 사이트 소개 하실때
ssg.co.kr 이라고 말씀하십니다.(영상에서 연습할 사이트는 cgv) 수업에는 방해되지 않는 부분입니다:))
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
Selenium 처리 속도 관련 문의드립니다.
연습1 모범 코드: id가 begin 인 데이터만 출력해보기 코드를 실행해보면,데이터 출력까지 꼬박 30초가 걸리네요..from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport timefrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.service import Servicefrom webdriver_manager.chrome import ChromeDriverManagerchromedriver = 'C:/dev_python/Webdriver/chromedriver.exe'driver = webdriver.Chrome(service=Service(chromedriver))driver.get("https://davelee-fun.github.io/blog/crawl_html_css.html")elems = driver.find_elements(By.ID, 'begin')for elem in elems : print(elem.text)driver.quit() 강사님 영상보면 늦어도 5초 이내에 실행되는 것 같은데 좀 답답한 마음에 문의 드립니다.data:, 화면에서 20초 가량을 멈춰있어요..구글링 해보니 브라우저와 드라이버 버전을 맞추면 실행이 빨라진다 해서, 몇 번 재설치를 해봐도 안되고 있네요..109.0.5414.25와 .74 모두 설치해봤으나 동일한 처리 속도이며,,Edge드라이버를 설치해서 불러와도 30초가 걸리네요.참고로 제가 사용하는 컴퓨터이며, 크롬에서 주소 입력시 1초 이내로 반응합니다. 강의 내용과는 조금 벗어날 수도 있는 부분인 것 같으나..현업이나 교육 중에 이런 현상을 보신 적이 있으실까 싶어서 여쭤보네요.강의는 정말 잘 듣고 있습니다.양질의 강의 찍어주셔서 정말 감사드려요!!^^
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
네이버 항공권 관련 제가 작성한 코드 조심스럽게 공유해드립니다.ㅜ
안녕하세요먼저 좋은 강의 해주시는 나도코딩님께 감사드립니다. 이전에 나름 정성들여 글을 작성했는데, 확인이 안돼서 다시 작성해봅니다. 제가 강의를 보고있는 2023년 1월 19일과 강의날인 2020년 8월과 네이버 항공권 인터페이스가 많이 상이하고, 셀레니움과 파이썬 버전이 달라 저의경우 아래와 같이 코드를 작성했습니다. 다른분들께 도움이 되었으면 좋겠습니다. 현재 저의 환경의 경우 python버전 3.10.7 버전이고 selenium또한 강의때 사용하신것 보다 더 높은 것으로 보입니다. 현재 제 경우와 강의내용과 상이한 부분은 아래와 같습니다. 네이버 항공권 진입시, "지금 바로 혜택 확인하기" 광고 팝업창 발생, 해당부분 get_attribute메소드를 사용해 title을 비교해, 팝업이 있다면 팝업을 삭제하는 XPATH를 확인해 해당 엘리먼트를 클릭하도록 구현browser.find_element_by_class_name과 같이 find_element_by_~~ 메소드 사용불가=> 현재 제가 사용중인 셀레니움 버전이 상위 버전으로 보이는데, 이는 3 line과 같이 import By로 쉽게 수정 가능find_elements_link_text 메소드 사용 불가=> 2020년대비 2023년 현재 네이버 항공권 웹페이지 인터페이스의 변화때문인지 "가는 날" 및 날짜 선택을 위해 해당 메소드 사용시 빈리스트만 반환"가는 날"은 XPATH로 엘리먼트를 얻어와 클릭하도록 구현원하는 날짜의 경우 class이름을 확인해 모든 날짜정보를 갖고와 원하는 날짜정보만 사용하도록 구현 (compute_date 함수 참고 부탁 드립니다.)추가적으로, 이 경우에 1년치 달력정보를 모두 읽어와 속도가 매우 느린데 더 좋은 방법을 알고계신분은 공유 부탁드립니다. ( _ _ )compute_date(dates, 30)[1].click()코드를 이렇게 수정해 오는날을 2월 30일을 선택하려 했으나 3월 30일을 선택해, 코드 오류인줄 알고 디버깅해보니 2월달은 30일이 없었습니다...ㅎ정상동작 중 입니다.저와같이 초반에 고생하시는 분들께 조금이나마 도움이 되었으면 좋겠습니다.감사합니다. import time from selenium import webdriver from selenium.webdriver.common.by import By URL = "https://flight.naver.com/" def compute_date(dates, target) -> list: print("compute entire date information from current month to limit") return [date for date in dates if date.text == str(target)] browser = webdriver.Chrome() # browser.maximize_window() browser.get(URL) time.sleep(1) # remove AD popup find = browser.find_elements(By.CLASS_NAME, "anchor") for f in find: if f.get_attribute("title") == "지금 바로 혜택 확인하기": browser.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/div[9]/div/div[2]/button[1]').click() print("remove pop up") break # push 가는 날 button also delay 1 sec is necessary, if don't use this, can not read date information. browser.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/div[4]/div/div/div[2]/div[2]/button[1]').click() time.sleep(1) # read date information and push 25 day dates = browser.find_elements(By.CLASS_NAME, "sc-evZas dDVwEk num".replace(" ", ".")) compute_date(dates, 25)[0].click() # read date information and push 30 day dates = browser.find_elements(By.CLASS_NAME, "sc-evZas dDVwEk num".replace(" ", ".")) compute_date(dates, 30)[0].click() while True: pass
-
미해결웹 자동화 프로그램 만들기(파이썬 + 셀레니움)
"크롬이 자동화된 프로그램에 의해 제어되고 있다며" 실행을 중단시킵니다. 실행 중단을 혹시 막을수는 없을까요?
from selenium import webdriver driver = webdriver.Chrome("./chromedriver") 이렇게 치면 화면이 잠깐 떳다가 바로 중단되서 사라지는데 실행 중단을 막을수 없을까요?
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
bs4 활용 2-1 질문합니다.
코드 실행시 정보가 오지 않고 반응이 없습니다!
-
미해결
동적 크롤링에 관련하여 질문 드립니다.
안녕하세요. 이번에 크롤링 강의를 듣고 있는 수강생 입니다. 현재 네이버 지도에서 위치를 검색 후 클릭 -> 클릭-> 한 후 네이버의 한줄평 리뷰 를 크롤링 하는 자체 프로젝트를 진행중입니다. 이때, 검색창을 찾고, click() 을 이용해 Crawling 을 위한 (3) 페이지 로딩까지는 성공하였으나, 옆의 화면에서 click 및 어떠한 활동도 할 수 없는 상태입니다. 제 소스 코드는 이렇습니다. for l in list_loc: ele = l.split((','))[:-1] comp = unicodedata.normalize('NFC',ele[-1][-1]) if comp != dong and comp != eup and comp != myun and comp != lee and comp != ga :continue address = ele[0]+' '+ele[1]+ ' '+ele[2]+' 식당' add_quote = urllib.parse.quote(address) driver.get(url) sleep(1) key_search = address time_wait(2,'div.input_box > input.input_search') search = driver.find_element(By.CSS_SELECTOR,'div.input_box > input.input_search') sleep(1) search.send_keys(key_search) search.send_keys(Keys.ENTER) res = driver.page_source soup = BeautifulSoup(res, 'html.parser') # html 파싱하여 가져온다 sleep(1) def switch_frame(frame): driver.switch_to.default_content() # frame 초기화 driver.switch_to.frame(frame) # frame 변경 res soup def page_down(num): body = driver.find_element(By.CSS_SELECTOR,'body') body.click() for i in range(num): body.send_keys(Keys.PAGE_DOWN) switch_frame('searchIframe') page_down(3) sleep(1) # 매장 리스트 store_list = driver.find_elements(By.CSS_SELECTOR, '._1EKsQ') next_btn = driver.find_elements(By.CSS_SELECTOR, '._2ky45 > a') print(len(next_btn), '....') for btn in range(len(next_btn))[1:]: # next_btn[0] = 이전 페이지 버튼, 1,2 : 광고/ 0,1,2 무시 -> [3]부터 시작 print(next_btn[btn].text, 'adsadsa') store_list print(store_list[0].text) store_page = driver.find_elements(By.CSS_SELECTOR, '.OXiLu') for data in range(len(store_list)): # 매장 리스트 만큼 #print(data, len(store_page), store_page[data].text, '00') store_page[data].click() sleep(2) try: driver.switch_to.default_content() print('switch test1') sleep(0.5) driver.switch_to.frame('entryIframe') sleep(4) print('switch test2') reviews = driver.find_elements(By.CSS_SELECTOR,'_2RG_o') except:pass 여기서, (3) 의 페이지가 네이버 지도의 entryIframe 안에 있는 것을 알고, switch frame 을 시도했습니다만, 무슨 락이 걸려 있는것인지 저 entryIframe 이 전혀 검색이 되지 않습니다. 하지만 소스 페이지 검색 결과, entryIframe 는 분명이 존재합니다. 제가 무엇을 빼먹은 것인지, 무엇을 잘못 하고 있는 것인지 알고 싶습니다. 감사합니다.
-
미해결
selenium을 활용한 업무 자동화 클릭, 다운로드
질문 https://www.localdata.go.kr/devcenter/dataDown.do?menuNo=20001 사이트에서 데이터 다운로드 - 전체 데이터 다운로드 - 전체분 - excel 다운로드를 하고자 합니다. 이를 위해서 우선 링크에서 '전체 데이터 다운로드'단계로 가려고 캡쳐처럼 id를 down-area인 것으로 보여서 xpath로도 해보고, selector로도 해봤는데 둘이 같은 오류가 발생합니다. 작성한 코드는 다음과 같습니다. from selenium import webdriver broswer = webdriver.Chrome() broswer.get('https://www.localdata.go.kr/devcenter/dataDown.do?menuNo=20001') # id = broswer.find_element_by_xpath('//*[@id="down-area"]') id = broswer.find_element_by_css_selector('#down-area') id.click() 사이트는 정상적으로 켜지나 클릭이 되지 않으며 나오는 오류 코드는 다음과 같습니다. (base) C:\test>[83512:84772:0427/183423.717:ERROR:device_event_log_impl.cc(214)] [18:34:23.718] USB: usb_device_handle_win.cc:1049 Failed to read descriptor from node connection: 시스템에 부착된 장치가 작동하지 않습니다. (0x1F) 어떻게 해결할지 모르겠어서 질문드립니다. 답변 기다립니다. 감사합니다.
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
selenium 크롤링에서 해당 태그가 부분적으로 없을때
안녕하세요. celenium 크롤링을 이용해 여러 페이지에서서 데이타를 가져올때, 특정 페이지에 해당 태그나 속성 name 이 없을 경우 그 곳에서 프로그램이 멈춰 서 버리는데요. 이럴 경우 어떻게 처리해야 하나요? 예) driver.get(https://davelee-fun.github.io) elem = driver.find_element_by_class_name("card-title") 물론 위의 테스트 웹사이트에서는 해당 클래스가 모두 있기 때문에 문제가 없는데요. 예외적으로 없을 경우 어떻게 처리를 해야 하는지 궁금해서 여쭤봅니다.
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
selenium에서 각각의 데이타 추출방법
강의 비디오 : Selenium 기본 사용법 1 - name으로 찾기 10분대 http 페이지명 : http://davelee-fun.github.io 질문 : 안녕하세요 강의 잘 보고 있습니다. Teddy의 선물 블로그에 각각의 카드 내에서 상품 추천과 상품명 2개를 가져오려고 할때 어떤 방법이 있는지 알고 싶습니다. 추천상품 다음에 상품명이 같이 나란히 나오게 하려고 하는데 잘 안되네요. 카드 정보 전체를 추출해서 다시 인덱스로 추출해야 하나요?
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
headless option 질문
안녕하세요. headless 개념 설명 이해 강의 14강 12:20 에서 options 에 여러 옵션을 add하는 부분이 있는데요! lang = ko_KR 옵션은 관계가 ' = ' 으로 되어 있고 User-Agent : 옵션은 관계가 ' : ' 으로 되어 있는데 어떤 상황에서 ' = ' 과 ' : ' 를 쓰는건지 헷갈립니다. 구글에 쳐봤는데 제가 잘 못 찾는 건지.. 자료를 찾기 힘들어서요. 각 관계표시가 어떤 상황에서 쓰이는건지 차이점을 알고 싶습니다. 항상 좋은 강의 감사합니다 :)
-
미해결
Python Selenium code 관련 질문드려요
from selenium import webdriver driver = webdriver.Chrome('C:/Users/estee/Desktop/파이썬 작업물/chromedriver.exe') import time # 주소모음 naver_GIBH = "https://map.naver.com/v5/search/%EA%B5%AC%EC%8A%A4%EC%95%84%EC%9D%BC%EB%9E%9C%EB%93%9C%20%EB%B8%8C%EB%A3%A8%ED%95%98%EC%9A%B0%EC%8A%A4/place/505375149?c=14140682.3022615,4508106.9534795,15,0,0,0,dh" naver_GBK = "https://map.naver.com/v5/entry/place/996095686?c=14133872.9335375,4519631.0127127,15,0,0,0,dh" naver_YONGSAN = "https://map.naver.com/v5/entry/place/1905880476?c=14133837.3558283,4513226.0701902,15,0,0,0,dh" naver_adresses = [naver_GIBH, naver_GBK, naver_YONGSAN] # 평점과 리뷰 크롤링 for adress in naver_adresses : driver.get(adress) driver.implicitly_wait(10) driver.switch_to.frame('entryIframe') rating = driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[1]/div/div/div[1]/div/span[1]').text submenu_name = driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[3]/div/div/div/div/a[3]/span').text # 메뉴가 5개 나올 때는, 4번째 탭을 이용하고, 메뉴가 4개 나올 때는 3번째 탭을 이용 if submenu_name != "리뷰" : driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[3]/div/div/div/div/a[4]/span').click() else : driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[3]/div/div/div/div/a[3]/span').click() # 리뷰개수 print( driver.find_element_by_xpath('//*[@id="app-root"]/div/div/div[2]/div[5]/div[4]/div[3]/h2/span').text ) driver.close() 해당 코드는 네이버 지도의 각 매장 별 리뷰 개수를 가지고 오는 코드에요. naver_GIBH , naver_GBK 링크는 리뷰 개수를 불러오는데, 마지막 naver_YONGSAN 링크의 리뷰 개수는 들고오지 못하더라구요. 혹시 이 코드에 관해 봐주실 수 있을까요 ? + 추가 질문인데, 제가 Selenium을 통해서 리뷰개수를 찾아오는 방식은 selenium으로 리뷰 탭을 선택하고 나서, 들고 오는 거에요. 근데 네이버 지도가 인스타그램처럼 스크롤을 내리면 정보를 불러오는 방식으로 설계되어 있더라구요. 혹시 이와 관련해서 Selenium으로 클릭하지 않고, crawling 하는 방법이 따로 있을지도 질문드려요 .
-
미해결내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
가상환경에서 selenium import
안녕하세요 . crawling 수업시 가상환경 생성하여 수업진행하셔서 저도 따라서 진행하고 있는데요. 가상환경에서 from selenium import webdriver 명령 입력시 하기와 같은 에러가 발생합니다.. ModuleNotFoundError: No module named 'selenium' selenium 설치되어있는것을 anaconda prompt에서 확인했는데도 계속 오류가 발생하길래 이상해서 가상환경을 종료하고 (base) 환경에서 selenium을 import하니 정상적으로 작동하네요.. 혹시 가상환경에서는 selenium이 작동되지 않는건가요?? 아니면 해결방법이 따로 있는건가요?? 아시는 부분 있으시면 알려주시면 감사하겠습니다.
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
lxml 오류
pip install lxml 시행하였는데 아래와 같은 오류가 발생하였습니다. 어떻게 해야하나요?
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
현재 네이버 항공권 셀레니움
현재 셀레니움을 공부하고 있습니다 너무 감사합니다 질좋은강의 최고입니다. 유료보다 좋은 무료라니... 천사이십니다... 저 지금 네이버 항공권 이미지가 조금 달려졌는데 browser.find_element_by_link_text("가는 날").click()이라고 하니 NoSuchElementException이 발생했습니다 왜이런건지 이해를 못하겠습니다
-
미해결
파이썬 셀레니움 send_keys 질문
driver.find_element_by_xpath('/html/body/div[2]/form/div/section/div/div[3]/p[2]/input').send_keys('5950') #금액 입력 안녕하세요 파이썬, 셀레니움을 이용해서 웹페이지 자동화를 하고 있습니다. click, send_keys가 다 정상적으로 작동 되는데 저 부분만 제꺼 컴퓨터에서는 정상 작동 친구컴퓨터에서는 작동하지 않네요... 건강보험 사이트인데...일부는 정상작동 몇분은 작동 안되는 이유를 모르겠습니다.
-
미해결내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
개발도구 페이지 network preview 나 network response Json 가져오는법
안녕하세요 유용한 강의 감사드립니다. 강의내용과는 무관합니다만.. 크롤링관련 막히는 부분이있어 조언을 얻고자 문의드립니다. 강의를 전부 듣고 업무에 활용하고자 회사 클라우드 서버의 erp 데이터를 가져오려고 합니다만. souce code 상에는 "You need a browser which full supports HTML5 Canvas to run SpreadJS" 라는 문구와 함께 데이터가 표기가 안되어.. 확인해본결과. 아래와 같이 Network 탭의 Response 나 Preview 탭에 원하는 데이터가 있는 것을 발견하였습니다. 아래 데이터를 받아노는 방법이있나요??. 보안문제로 selenium을 통해서 페이지에 접근을 해야하며.. selenium-wire를 통해 현재 페이지의 payload 까지 가져오는데는 성공하였습니다.
-
해결됨파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
res = requests.get(url)에서 오류가 나요
이렇게 뜨는데 어떡해야 하나요? import 문제인거 같은데
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
제발 도와주세요......
저는 네이버 부동산을 스크롤하려고 하고있습니다 하지만 스크롤 대상이 body가 아닌 이 그림에 왼쪽아래 부분에 또다른 작은 부분의 스크롤을 내리려고 하는데 도저히 되질 않습니다 ㅠㅜㅠ 어떻게 해야하는지 답변좀 부탁드리겠습니다.... ㅠㅠㅠㅠ
-
해결됨현존 최강 크롤링 기술: Scrapy와 Selenium 정복
scrapy shell에서 실행이 너무 복잡하게 보입니다
scrapy shell로 css 값을 확인할려고 하면 이렇게 다 붙어져서 나옵니다.(오류는 없습니다) 동영상에 나오듯 하나씩 띄어쓰게 나오게 하는 방법은 없나요?? 확인할려고 하면 너무 꼬여서 가독성이 떨어집니다ㅠㅠ 터미널은 iterm2를 사용하고 있습니다
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
iterm2를 사용하면서 터미널에서 오류가 발생합니다...
안녕하세요! 크롤링 강의를 듣고 더 배우고 싶어서 스크래피를 듣고 있는 학생입니다. 저는 맥을 사용하고 있기 때문에 영상에서 iterm2를 보고 따라하면서 사용을 하는데 자꾸 zsh: command not found: scrapy 라는 문구가 나옵니다. 이 오류때문에 계속 나아가질 못해서 해결방법이 궁금합니다ㅜㅜ 만약 iterm2 자체 문제이면 기본적으로 설치되어있는 터미널이나, 아나콘다 터미널을 계속 사용해야 하는지 궁금합니다!