30만원 짜리 외주 프로그램 만들기 - 파이썬으로 네이버 쇼핑 크롤링하기 1편 (ft. 셀레니움 selenium)
HTML-код
- Опубликовано: 11 янв 2025
- 네이버 쇼핑 예제가 조금 바뀌었습니다.
영상의 코드는 현재 정상 동작하지 않습니다.
인프런 사이트에 무료 수강신청 시
정상 동작하는 코드를 바로 확인할 수 있습니다.
이것이 진짜 크롤링이다 - 기본편
bitly.ws/Sjsk
=================================
find_element_by_css_selector 는 셀레니움 4.3.0부터 더 이상 사용되지 않습니다.
find_element로 바꿔야 하는데 사용법은 아래 영상을 참고해 보시기 바랍니다.
• 셀레니움 크롬 드라이버 자동 업데이트 방...
프로그램 동작 완료하고 꺼지는 것은 정상이지만
창이 꺼지는 것을 막으려면 아래 3가지정도 해결방법이 있습니다 ^^
1. 주피터노트북을 이용해서 실행 상태를 유지하게 만든다.
아래 유튜브 영상 참고
• 주피터노트북 vscode에서 설치 및 사...
2. 꺼짐 방지 옵션을 추가한다. (detach)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
브라우저 꺼짐 방지 옵션
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=chrome_options)
웹페이지 해당 주소 이동
driver.get("www.naver.com")
아래 유튜브 영상 참고
• 셀레니움 크롬 드라이버 자동 업데이트 방...
3. 무한루프 또는 input() 이용해서 강제로 종료 방지
코드 마지막에 input() 명령을 넣어
사용자의 입력을 받기 전까지 프로그램이 종료 되지 않도록 한다.
(2023.05.21추가)
네이버 메인 페이지가 업데이트 되면서 쇼핑 메뉴를 기존 선택자로 클릭할 수 없게 되었습니다.
네이버 쇼핑 페이지로 바로 페이지 이동 하도록 코드를 수정해 보세요 :)
아래와 같이 url을 네이버 쇼핑으로 변경하고 강의를 따라가 봅시다
url = "shopping.naver..."
30만원을 받고 만들어 준 외주 프로그램 만드는 과정을 공개합니다.
이런 거 다 공개해도 괜찮겠죠..?
네이버 쇼핑 상품 정보를 검색어 별로
크롤링 후 엑셀로 저장하는 프로그램입니다.
여러분도 강의를 듣고 나면 프로그램을 제작해서 돈을 벌 수 있습니다.
어렵고 불친절한 코딩 강의에 지치셨나요?
스타트코딩이 여러분들을 힘껏 도와 드리겠습니다.
★ 스타트코딩과 함께 코딩 공부하기
startcoding.li...
안녕하세요 메일로 물어봤던 사람입니다..!
댓글이 넘 늦었죠 ㅜㅜ
구글링 해도 안나와서 메일 보냈었는데 친절하게 알려주셔서 감사합니다!!
엇 안주셔도 되는데,, 감사합니다!! 잘 쓰겠습니다♥
파이썬 강의 중에 가장 음질이 하울링없이 깔끔하고 말씀도 잘하시고 목소리도 좋으셔서 계속 보게되네요^^ 업무 자동화와 더불어 저의 자기계발 취미생활에 큰 도움을 주셔서 항상 감사해요~
안녕하세요 연노랑빛님ㅎㅎ
제가 도움이 되었다니 다행입니다 ^^
꾸준히 재미있는 강의 만들어 드릴게요!
@@startcoding.official 이 영상보고 다른 서칭과 더불어서 이 코딩을 응용프로그램으로 만드는것 까지 해봤습니다. 번거로운 요청일수 있지만 제 바람을 말씀드리자면 이제부터는 아이디 비번을 코딩 작성 단계에서 입력하는게 아니라 프로그램 초기 실행시에 설정을 통해서 누구나 해당 프로그램을 사용할 수 있도록 범용성을 갖춰보고 싶습니다.. 혹시 이러한 영상도 언젠가는 가능할까요?? + 제가 띄운 창의 주요 정보를 RSS링크로 변환하는것에도 관심이 있습니다. 답변주시면 황송하겠습니다.
좋은 강의 감사합니다.
9:00 부분을 따라하다가 막혀서 찾아봤는데 selenium 최신버전은 find_element_by_css_selector가 안된다고 합니다.
구버전 말고 최신버전에는 find_element_by_css_selector 말고 어떤 코드를 작성해야하나요?
그리고 그런 정보들은 어디서 구하시는건가요??
지나가는길에 우연히 보고 답변드립니다~
사실 가장 속 편한 방법은 그냥 이전버전으로 다운그래이드해서 쓰는것입니다.
모듈을 인스톨 하실때 버전을 지정하실수있어요!
최신버전을 쓰고 싶으시다면 조금은 가시밭길이지만...
공식문서나 검색을 해서 인터넷을 돌아다니셔야합니다
샐래니움 공식문서가 가장 좋지만 초보자 입장에서는 이해가 쉽지않을것입니다
마지막으로 말씀하신 코드는 아래와 같이 문법이 바뀌었으니 참고하셔요
from selenium import webdriver
from selenium.webdriver.common.by import By
find_element(By.CSS_SELECTOR, '._aagw')
find_element(By.필요한 것 ,".css클래스 값") 입니다
네이버 쇼핑 예제가 조금 바뀌었습니다.
영상의 코드는 현재 정상 동작하지 않습니다.
인프런 사이트에 무료 수강신청 시
정상 동작하는 코드를 바로 확인할 수 있습니다.
이것이 진짜 크롤링이다 - 기본편
bitly.ws/Sjsk
이 글을 맨위로 올려주시면 좋겠습니다 열심히 따라 했는데 안되는 코드라니...ㅠ,ㅠ
링크가 정상 연결이 안되네요??
크게 구조가 바뀌면서 사이트가 많이 업데이트 되었습니다 ㅎㅎ
크롤링을 제대로 배우고싶다면 최근에 촬영한 유튜브영상으로 학습하시는것을 추전드려요~
안녕하세요, 좋은 강의 제공해주셔서 감사합니다.
그런데 10:36 이 부분에서 검색 css선택자 입력시에 강의에서와 코드가 달라서 다른 코드를 입력했는데 검색창 클릭이 진행되지 않습니다.
현재 css선택자는 _searchInput_search_ input_QXUFf 인데 언더바 부분을 모두 붙여서 입력해야 할까요?
안녕하세요 영상 보면서 하나하나 따라하고 있는데 저는 09:03:00 부분에 find_element_by_css_selector가 나오지 않고 find_element랑 find_elements 까지만 나오는데 이유가 뭔지 알고싶습니다 ㅠㅠ 구글이나 네이버 뒤져봐도 원인을 모르겠어요 ㅠㅠ
셀레니움이 4.3.0버전부터 find_element로 통일 되었습니다. find_element 명령어를 사용해주세요
감사합니다. 정말 잘 배우고 있습니다.
어제 한번 보고, 오늘 입력해봤더니 잘 되네요 ㅎㅎㅎ
좋은 강의 감사드립니다
감사합니다~!!😄😄
좋은강의 감사합니다~!
허하핳 님 감사합니다~~~!!!
좋은 강의, 잘 보고 갑니다
감사합니다 :)
너무 유용합니다.
좋은 강의 감사합니다. 따라하면서 배우고 있습니다.
8:50에 나오는 크롬 개발자도구의 css selector 검색창(?) 어떻게 나오게하는지 여쭤봅니다.
저의 크롬에서는 F12 눌러도 그 창이 없어 문의드립니다.
Elements 탭 클릭 후 Ctrl + F 를 누르면 나옵니다 ㅎㅎ
@@startcoding.official 와우,,,,빠른 답변 감사드립니다^^
두분다 감사합니다
다른 강의도 잘보고 있습니다. 다른강의에서 창이 자동으로 꺼지는게 7분 48초에서 또 발생 합니다. 다른 강의꺼는 안꺼지는데 이번강의는 꺼지더라고요
근데 혹시 몰라 pip install bworser 하니깐 딱 저 3줄만 있어도 인터넷창이 안꺼지고 잘켜지네요~ 대부분 저처럼 처음 하셔서 1편강의 라고해서 따라하면 안되는 경우가 있을거 같아요~ 인터넷창 바로 꺼지는분은 pip install browser 이거 한번 해보세요~
너무 감사드립니다. 사실 다른 유튜버분을 통해서 beautifulsoup 강의를 따라 네이버 크롤링을 하다가 막히길래 질문을 막 했었는데 정적 동적 관련한 이야기를 답변으로 하시길래 무슨말인가.. 내가 그럼 어떻게 해야하는건가.. 를 고민했었는데 이 강의를 통해서 먼가 알게 된 것 같아서 너무 감사드립니다.
동적으로라는말이 초보자 분께는 어렵죠ㅋㅋㅋ
최대한 풀어서 설명 드리려고 했는데 이해가 되셨다니 다행입니다.
7:50 부분에서 재생 버튼 누르면 네이버가 떠 있어야 하는데// 저는 네이버 화면이 잠시 나타났다가 꺼집니다.// 뭐가 문제일까요// 동일하게 작성 했거든요/
해결하셨나요? 저도 그러네요
안녕하세요! 이런 강의영상 감동입니당 ㅎ 제가 크롬 버전 버전 115.0.5790.171 인데 이거는 다운이 없네요 ㅠ 어떻게 어떤걸 다운받아야 할지 문의 드립니다. 감사합니다 :)
안녕하세요 영상 너무 잘보고 배우고 있습니다. 혹시 CSS 선택자를 어떻게 만드는건지 알 수 있을까요? 강의라도 있으면 배우고 싶습니다.
재생 목록중에
'이것이 진짜 크롤링이다'안에 선택자관련된 영상이 있습니다!ㅎㅎ
07:48 실행하면 새창이 열리다가 바로 사라집니다. 혹시 이유를 아시나요?
ruclips.net/video/LoPvjfABlBA/видео.html 영상을 한번 참고해 보시죱
안녕하세요. 하나하나 따라가다가 이것 저것 막히니 못하겠네요 ㅜㅜ
네이버쇼핑의 css 선택자가 모두 바뀌었는지 화면과 다르고, class에 띄어쓰기도 없어요 ㅜㅜ 그대로 입력하면 중복되는 다른 클래스도 있구요..
영상이 옛날 영상이라 네이버쇼핑의 세팅과 아얘 다른가봐요 ㅜㅜ 진행이 안되네요ㅜ
안녕하세요 :)
웹사이트는 업데이트 되는 경우가 종종 있습니다.
업데이트 시 CSS 선택자도 바뀌게 되는데, 이는 앞 영상에서 설명드린 선택자 만드는 법을 알면 바뀌는 것에 충분히 대처가 가능합니다.
유튜브영상은 한번 올리면 수정이 불가능하기 때문에, 잘 동작하는 소스코드를 제공하거나, 인프런 사이트에 재촬영하여 조만간 업로드 해보겠습니다 ^^
안녕하세요, 영상을 보면서 코딩 실습을 따라 하는데 #쇼핑 메뉴 클릭# 부분에 'WebDriver' object has no attribute 'find_element_by_css_selector'' 에러가 나왔습니다.
에러가 왜 나는지 또는 어떻게 해결하는지 설명해주실 수 있을 까요?
안녕하세요 :) 영상 정보에 적어 놓았으니 한번 확인해 보세요 ^^
안녕하세요 강의 잘 보고 있습니다.
그대로 따라하는데 코드를 실행하여 웹페이지를 켰을 때 바로 종료되는 현상이 있습니다.
크롬 드라이버 버전 맞췄고, VSCode 최신버전 다 했음에도 현상이 계속 일어납니다.
이 현상으로 인해 진도를 못 나가고 있습니다. 원인과 해결법이 있을까요?
제 영상중에 주피터 노트북 사용방법이있는데 이를 보고 따라하시면 해결이 가능합니다 ^^
혹시 셀레니움이 아니라 beautifulsoup4 를 써야할 곳도 존재 하는건지가 궁금합니다. 다른개념이겠지만 beautifulsoup 을 써야할곳에 셀레니움을 쓸수있다면. 상위호환이 되는게 아닌가. 구지 beautifulsoup을 써야하는건지 어떨때 우선시 되는건지에 대해 답변해주실수 있을까요?
상위호환은 아니에요.
간단하게 설명하자면, 속도면에서 엄청난 차이가납니다.
셀레니움
그래서 beautifulsoup으로 먼저해본 다음에 어렵다면 셀레니움을 쓰시는것을 권장드립니다.
정말 감사합니다 ㅠㅠ 구독하고 전부 보겠습니다. 좋은정보 다시한번 정말 감사합니다
@@kimjang. 감사합니다 ^^
영상이 크게 도움이 되고 있습니다.
그런데 제가 받은 webdriver 에 이슈가 있는지는 모르겠는데 아래의 오류 메시지가 확인됩니다.
어떻게 해야 할까요?
AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'
셀레니움이 4.3.0버전부터 find_element로 통일 되었습니다. find_element 명령어를 사용해주세요
멍청하지만 일단 클릭해봤습니다.
강의대로 따라하면서 하는데
코드실행시 네이버앱이 3초켜졌다 꺼지더라구요. 위 댓글에 동일한분있어서 다른 기초강의에서 앱꺼짐중지 코드영상도 보고 따라했는데 그 코드랑 이코드랑 웹드라이버로 달라서인지 옵션이 없다고 안되는데 혹시 이 코드에서 앱꺼짐즁지를 같이 넣으려면 어떻게 코드를 짜야할까요 ㅍ
와!!!!! 근데 스타트 코딩님아!!! 파이썬은 어찌 설치해용?
ruclips.net/video/PlMpk-If9jA/видео.html 여기서 설치하면 됩니다 :)
안녕하세요. 다름이 아니라 css선택자 이름을 만들어서 사용하려고 하는데요.
저는 Styles 위에 입력란이 없습니다. 이건 어떻게 해야 하나요?
ctrl + f 누르면 입력란이 나옵니다 ^^
@@startcoding.official와 정말 이렇게 쉬운 걸 정말 감사합니다~~ 정말 많은 도움이 되고 있습니다. 앞으로도 좋은 강의 부탁 드립니다~
사랑해여
♥
영상 잘봤습니다. a태그가 뭔가요?
a 태그는 하이퍼링크 태그로, 클릭했을 때 href 속성값으로 이동하는 태그입니다 ^^
화질이 안좋아서 텍스트가 잘 안보여요....
뉴스픽을 페북이나 블로그에 가져올려고 하는데요 어떠휴게 해야 하나요?
뉴스픽 정보를 크롤링해서 페북이나 블로그에 업로드 하면 되겠죠? ㅎㅎ
처음에 브라우저가 열렸다가 닫히는데 왜그런지 아실까요?..
제 영상중에 주피터 노트북 사용방법이있는데 이를 보고 따라하시면 해결이 가능합니다 ^^
옵션도크롤링되나요
품명 및 모델명
ABCDE 모자
소재
폴리에스터(100)
안녕하세요, 이런 tr태그 값이 순서가 뒤죽박죽인 사이트를 (어떤 제품은 중간에 소재가 없거나해요 ㅜ)
크롤링 하려고 합니다.
그래서 [tr*='소재'] 이런식으로 "소재"를 포함한 td 값만 스크래핑 하려고 하는데 잘안돼네요.
도와주실수 있을까요?
td 전체를 크롤링한다음 (리스트형태니 for문 돌리면 되겠죠?)
텍스트 데이터가 "소재"인 것을 찾습니다.
있다면 바로다음 td의 텍스트를 스크래핑하고
없으면 넘어갑니다.
제 예제가 아니라 정확하진 않습니다^^
@@startcoding.official 텍스트 데이터가 소재인것을 찾는 수식은 어떻게 되나요? ㅜㅜ 그리고 갖고오고 싶은 값은 소재 다음 td값인데 그 값을 가져오는 수식도여 ㅜㅜ
@@yun_9959
텍스트 데이터로 검색하는 방법이 적힌 블로그입니다! 여기를 방법을 따라해 보세요.
yeko90.tistory.com/23
@@startcoding.official 감사해요!! 이걸로 해결했어요!!
혹시 크롬이 열리면서
C:\startcoding>[14148:9108:0706/163146.242:ERROR:device_event_log_impl.cc(214)] [16:31:46.243] USB: usb_service_win.cc:415 Could not read device interface GUIDs: 지정된 파일을 찾을 수 없습니다. (0x2)
[14148:9108:0706/163146.243:ERROR:device_event_log_impl.cc(214)] [16:31:46.244] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 시스템에 부착된 장치가 작동하지 않습니다. (0x1F)
[14148:9108:0706/163146.245:ERROR:device_event_log_impl.cc(214)] [16:31:46.245] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 시스템에 부착된 장치가 작동하지 않습니다. (0x1F)
이러한 에러가뜨는데 해결방법이 있을까요?
해당 내용은 프로그램 동작에 문제를 일으키는 오류가 아닙니다 ^^
win64는 없나요?
잘보고 있습니다. 하던 와중에 "browser " is not defined 라는 오류 메시지가 나오는데 어떻게 해결 할지...
browser가 정의되지 않았다고 하네요.
오류메시지가 난 라인 넘버 위쪽으로 변수가 선언되었는지 확인해 보세요 :)
대소문자 실수였습니다. 감사합니다. ^^ 그런데 크롬창이 자동종료되는데 구글링을 아무리 해도 해결이 안되네요. 혹시 아시면 답변 바랍니다.
셀레니움 문법 변경사항이 있어서 이 강의부터 많이 어려워지네요....
find_element_by 에서 find_elements로 수정만 해주면 됩니다!!ㅎㅎ 안 그래도 크롤링 강의력이 1년동안 많이 성장해서 새로 구성해볼 예정입니다 ^^
임다TV 닮으셨습니다
안녕하세요 ! 강의 너무 잘보았습니다 :) 혹시 제 vs code 환경에서 from selenium import webdriver.common.keys import Keys 에서 invalid syntax 에러가 나서 구글링 해보니 from selenium.webdriver.common.keys import Keys
로 많이 사용하시길래 바꿔서 구동해봤는데 이 방법도 상관 없을까요 ?
네 상관 없을 것 같네유 ㅎㅎ
차근차근 쏙쏙 들어오는 강의 감사합니다. 질문은 엑셀 시트 데이터에 링크(url)를 넣었더니 저장된 링크(url)가 열리지 않습니다. 엑셀에서 링크를 열어 그 브라우저를 볼 수 있는 방법이 궁금합니다.
안녕하세요!!
질문에 대해 답변을 드리려고 엑셀 파일 링크를 테스트 해봤는데 링크가 안 걸리네요.
상세페이지 url이 링크가 활성화 되지 않는 특이한 유형인 것 같습니다.
조금 귀찮지만,
복사해서 브라우저에 넣으면 잘 열립니다. 감사합니다.
@@startcoding.official답변 감사합니다. 정말 자상하게 차근차근 가르쳐 주셔서 친절하심에 감사드리며 한 가지 더 질문을 드립닏다. 저의 경우는 엑셀 뿐만 아니라 exe 화일로 저장했을 때도 링크가 활성화 되지 않습니다. 이것도 같은 케이스 인가요?
웹사이트 열기에서 네이버 켜졋다가 바로꺼져버리네요 ㅠ 뭐가문제인가요..?
터미널보고 원인을 찾아서 고치긴 고쳤습니다. 크롬에서는 96버전이라고하는데 터미널에서는 95라고해서 95로 드라이버 깔아봣더니 되네요 ..왜그랬을까요 ㅠ
그런 경우도 가끔 발생하는것 같아요..!
크롬은 업데이트 되었지만, 셀레니움은 이전 버전을 찾고있는 상황...?
셀레니움쪽 이슈같아 보이는데 정확한 것은 모르겠습니다.
크롬 드라이버가 업데이트되면 자동으로 다운받는 코드도 있으니 검색해서 적용해 보면 도움이 될겁니다.
어떻게 해결 하셨나요?
스타트코딩님 저는 왜 chromedriver.exe 파일을 열기까지는 하는데 바로 창을 닫아 버립니다...
그리고 저는 시작페이지가 구글인데요 페이지도 안넘어갑니다
왜이런걸까요...똑같이 작성을 했는데...
하나더 있습니다... find_element_by_css_selector 이게 없다고 하는데요...
지난주까지 잘 되었는데, 저도 증상이 같습니다.ㅠㅠ 크롬 드라이버 삭제하고 재설치해도 마찬가지네요.ㅠㅠ
@@이잔디-p7u 저는 해결했습니다 일단 크롬드라이버는 정상작동하네요
저는 셀레니움을 다운그레이드 했습니다
다시말해 그냥 셀레니움을 삭제하고
selenium==3.141.0 이버전을 설치했습니다
그리니 해결되더라구요
@@kaga698 다운그레이드 방법이 있을까요?
안녕하세요 보고따라하던중 이런 오류 문구가 발생하였는데요
PS C:\Users\Lucky\코딩> [5508:17932:0730/161250.500:ERROR:device_event_log_impl.cc(214)] [16:12:50.500] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.
[19188:4556:0730/161320.881:ERROR:gpu_init.cc(486)] Passthrough is not supported, GL is disabled, ANGLE is
구글에 쳐서 찾아보니 크롬버전이랑 드라이버 버전 안맞아서 그렇다고 해서 맞췄는데도 이런 오류가 뜹니다. 어떻게 하면 좋을까요?
해당 내용은 오류가 아니라 무시하면 되는데요, 만약 감추고 싶다면 아래 영상을 참고해 보시기 바랍니다.
ruclips.net/video/LoPvjfABlBA/видео.html
강의 감사합니다. 다름이 아니라 find_element 구문이 업데이트 되었다고 하여browser.find_element(By.CSS_SELECTOR,a.nav.shop').click() 로 입력하니 name 'By' is not defined로 뜨는데 뭐가 잘못된 걸까요?
By를 import 해줘야합니다
from selenium.webdriver.common.by import By 일 거에영ㅋㅋ
@@startcoding.official from selenium import webdriver
from.selenium.webdriver.common.by import By
import time 이렇게 했더니 이번엔 또attempted relative import with no known parent package 이렇게 나오는데 어떻게 해야할까요?ㅠ
오타입니다 다시한번 영상을 잘 보면서 스펠링 체크 해주세욥
감사합니다 잘 마무리하고 마지막에 말씀하셨던거처럼
80개씩 보기로 늘리고 1페이지 스크롤 다운, 2페이지 스크롤 다운 작업 반복하려하는데
상품타입 박스랑, 40개씩 보기 class="subFilter_btn_select__K6F79"로 같습니다.
그래서 browser.find_element_by_css_selector('a.subFilter_select__1eEJS').click() 로 설정하면
상품타입이 클릭 되는데 어떻게하면 40개씩보기가 클릭 되게 할 수 있을까요??
40개씩 보기 html태그에 오른쪽 클릭하면 [copy selector]가 있을 거예요 그걸 이용하시면 됩니다 ^^
101수강생입니다 ! 다름이아니라
지마켓에서 해당 부분을 활용해서 스크롤을 내려보고싶은데
지마켓에서는 작동이 안되서 혹시 이유가있나요 ?
while True:
# 맨아래로 스크롤을 내린다.
browser.find_element_by_css_selector("body").send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(1)
# 스크롤 후 높이
after_h = browser.execute_script("return window.scrollY")
if after_h == before_h:
break
before_h = after_h