[초보도 가능] 30만원 외주 프로그램 만들기 - 파이썬 웹 크롤링 셀레니움 Selenium 강의 2편(ft. 스크래핑 결과 csv 파일 저장하기)

Поделиться
HTML-код
  • Опубликовано: 11 ноя 2024

Комментарии • 93

  • @Jinseo1905
    @Jinseo1905 9 месяцев назад +1

    페이징 빼고 영상에 나온 부분은 다 완료했어요! 페이징은 생각한 것과는 달리 약간 다른 느낌으로 진행되는 것 같아서 꽤 만져봐야 될 것 같아요 ㅠㅠ

    • @startcoding.official
      @startcoding.official  9 месяцев назад +1

      사이트가 조금 달라져 어려울수도 있는데
      흡수가 빠르시네요 :)

  • @HS-io3xp
    @HS-io3xp 2 года назад +2

    감사합니다 ㅠㅠㅠ 힘들었는데 덕분해 해결했어요. 스타트코딩은 신이야..

  • @논용
    @논용 3 года назад +1

    GOOD!!!!!
    크롬 개발자 도구 설명, 태그 설명까지 같이 들으니 이해도 쉽고 이해가 되니 재미도 붙어서 좋습니다.

    • @startcoding.official
      @startcoding.official  3 года назад

      감사합니다^^ 더 좋은 강의
      많이 만들어 드리겠습니다!!

  • @구름이구름구름
    @구름이구름구름 Год назад +1

    정말 머리에 쏙쏙 들어와요 너무 재밌어요!!

  • @Angdo_an
    @Angdo_an 2 года назад +1

    진짜 명강의.. 너무 감사합니다

  • @roka98
    @roka98 3 года назад +1

    오늘도 덕분에 좋은 강의 잘 들었습니다. 감사합니다.

  • @강대현-l6r
    @강대현-l6r 2 года назад +3

    22:14 이거 implicity 10초로 설정하셨던 거 때문에 멈추는 거예요
    10초동안은 요소가 등장하지 않아도 기다립니다
    해결방법은 try 윗줄에
    Implicity 0초 0.1초 뭐 이런식으로 바꾸시면 될거같네용

  • @brain_insight
    @brain_insight 2 года назад +1

    감사합니다. 덕분에 잘 배우고 있어요

  • @이재훈-u9o
    @이재훈-u9o 3 года назад +1

    와 강의 잘들었습니다.... 유용한 정보 감사합니다!

  • @블랰-f5d
    @블랰-f5d 2 года назад +1

    너무 잘 설명해줌

  • @hhpark2021
    @hhpark2021 2 года назад +1

    유용한 정보 감사합니다!!!

  • @junym929
    @junym929 2 года назад +3

    크롤링한 상품에 세부내용 또한 크롤링하는 내용도 알고 싶습니다

  • @blk2728
    @blk2728 2 года назад

    감사합니다!!

  • @hoit5351
    @hoit5351 2 года назад +1

    진짜 최고 쉽게 설명해주시네요!!!! 너무 유익합니다 감사해요🥹🫶 셀레니움으로 뒤에 페이징처리 하는 것도 공부하고 싶은데.. 뒤에 영상은 더 없는거죠?ㅠㅠ 파이썬으로 뉴스 스크래핑 하기 영상 (bs4활용영상) 의 페이징 처리를 응용하면 되나요??

    • @startcoding.official
      @startcoding.official  2 года назад

      네. 뉴스 스크래핑 영상의 페이징 처리를 응용해도 되고, 이것이 진짜 크롤링이다 실전편을 들어 보시면 더 도움이 될 겁니다 ㅎㅎ www.inflearn.com/course/파이썬-크롤링-실전?inst=bd097ed3

    • @hoit5351
      @hoit5351 2 года назад

      @@startcoding.official 오호 인프런에 강의가 있었네요?!! 감사합니다 🤩

  • @SeoJunYong
    @SeoJunYong Год назад +1

    웹페이지에서 검색어 입력을 하고 크롤링 버튼을 눌렀을때 위 파이썬 프로그램이 구동되도록 하고 싶은데 어떤 자료를 찾아봐야 할까요?
    - 웹페이지와 파이썬 프로그램 간 연동 (검색키워드를 파이썬 프로그램으로 넘기기, 파이썬 프로그램 실행시키기 > 백그라운드 실행 가능??)

    • @startcoding.official
      @startcoding.official  Год назад +1

      제가 최근에 올린 주피터노트북 영상을 참고 해보시겠어요? ^^
      ruclips.net/video/1tKPqQmXM98/видео.html&ab_channel=%EC%8A%A4%ED%83%80%ED%8A%B8%EC%BD%94%EB%94%A9

  • @laughingshuttle
    @laughingshuttle Год назад

    기존 browser 가 driver로 바뀌었군요 클래스 101 과제로 들어와서 보는데 하면할수록 하는 업무에 적용할수 있는게 보이니 동기부여가 되네요.

  • @GSFRANKy
    @GSFRANKy 2 года назад

    감사합니다..ㅠㅠ 정말 많으 도움이 되었습니다~^^
    한가지 질문이 있어서요.. 쇼핑몰을 운영하고 있는데 판매상품들의 리뷰를 일괄로 크롤링 하고싶은데 한번에 하는데 가능할까요? 아니면 상품별로 해야하는지 해서요.. 가능하다면 도전해보려구요 ㅎㅎ

  • @Lopemom1
    @Lopemom1 2 года назад +1

    정말 많은 도움이 됐습니다. 정말로 감사드립니다. 궁금한 점이 있습니다. html 태그를 복사 - selector 복사 해서 사용 중인데 스타트코딩님처럼 어떻게 html 태그를 편집해서 들고올 수 있는지 알려주실 수 있나요?

    • @startcoding.official
      @startcoding.official  2 года назад

      html기본구조와 css selector를 공부하면 됩니다.
      자세한 내용은 '이것이 진짜 크롤링이다' 재생목록을 정주행해 보세요 ^^

  • @세발낙지맨
    @세발낙지맨 2 года назад

    ​ @스타트코딩 다른 영상에 사진에는 다리가 다섯개라고 대댓 달아주셔서 두개는 팔입니다ㅎㅎ 스타트코딩님 영상에 네이버에 아이폰 상품들 나오는 화면에서 전체/가격비교/네이버페이/백화점홈쇼핑/쇼핑윈도/해외직구 탭을 F12번을 눌러서 보면 전부 a탭에 href도 #으로 같고 class도 모두 같습니다. 저는 해외직구 탭만을 클릭하도록 코딩을 하고싶은데 css선택자를 어떻게 선택해야 할까요??

  • @지오지오-g9z
    @지오지오-g9z 2 года назад

    csvWriter.writerow([ ]) 이 부분이 행을 추가한다라고 하셨는데 실행했을때 영상과 제가한 파일에도 행이 추가가 안되어있는데 이게 무엇을위한 코드인가요?? 첫행에 머리글처럼 나오는 건가했는데.. 혹시 머리글(상품명,가격,링크) 이런식으로 첫행에 나오게 하는 코드는 어떤 걸까요?

  • @FISHBLACKNOSE
    @FISHBLACKNOSE 3 года назад +1

    좋은 강의 정말 잘 들었습니다!! 다른건 다 따라 해보았는데, 경로복사해보고나니, 밑에 빨간줄이 나타나네요
    이것 때문인지 실행이 안되는거 같은데 방법이있나요?

    • @startcoding.official
      @startcoding.official  3 года назад

      네~소스코드랑 에러메시지를 적어 주시겠어요??

    • @FISHBLACKNOSE
      @FISHBLACKNOSE 2 года назад

      안녕하세요! 빨간줄은 한번더 스타트코딩님 영상보고 고쳐진것같아요! 다만, 파일을 찾을수없다고 나오네요 ㅠㅠ
      hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
      FileNotFoundError: [WinError 2] 지정된 파일을 찾을 수 없습니다
      이럴경우 어떻게 해야할까요?

    • @startcoding.official
      @startcoding.official  2 года назад

      @@FISHBLACKNOSE 파일 생성 부분에서
      경로 또는 파일 열기 모드를 잘못 입력한 것 같아요~!
      소스 코드를 봐야지 제가 확인할 수 있습니다ㅎㅎ

  • @DanielWChoi
    @DanielWChoi 2 года назад +1

    안녕하세요 좋은 강의 감사합니다. 근데 만약에 페이징이 URL에 반영이 안되는 경우는 어떻게 하나요? 1, 2, 3, 4, 5 페이지 넘버로 뜨고 5 다음에 "다음" 누르면 6, 7, 8, 9, 10 버튼이 나오는 형태입니다. 일주일 째 방법 찾으려고 끙끙대고 있는데 도무지 모르겠네요ㅜㅠ

    • @startcoding.official
      @startcoding.official  2 года назад

      셀레니움으로 다음 버튼을 직접 눌러주는 방법이 있을 것 같네요 ^^

  • @jykim1581
    @jykim1581 Год назад

    Selenium 메소드가 바뀌어서그런지
    뒤에 .text를 하니까 글자만 가져와지지가 않는데
    방법이있을까요?
    메소드가 괄호로바뀌고나서요!

  • @cpssa6901
    @cpssa6901 3 года назад +1

    if after_h == before_h:
    break
    이거 처음에 before_h가 스크롤이 맨 위에 있어서 0일텐데,
    after_h는 내려가는 거잖아요 END 키 눌러서,
    after_h 맨 밑에 값은 수치가 높을텐데,
    어떻게 == 가 적용이 되는건가용?
    막상 작동해보면 중지 되긴 하더라구요. 궁금합니다!

    • @startcoding.official
      @startcoding.official  3 года назад

      반복할때마다 before_h에 after_h를 저장해주기 때문에 마지막엔 두개가 같아집니답!

    • @cpssa6901
      @cpssa6901 3 года назад

      @@startcoding.official 아하! 감사합니다 도움이 되었습니다.

  • @sclee9833
    @sclee9833 2 года назад

    선생님. 선생님 강의로 타 사이트에 적용해서 코딩 중인데요!
    for item in items:
    pname = item.find_element_by_css_selector(".Brand_prodtHeight").text
    요부분 (강의 타임라임 16분) 작성할때
    == $0
    "상품이름"
    라고 되어있어서
    class 이름을 brandbrandname 으로 하면 상품개수가 72개인데 145개가 선택됩니다 ㅠ
    여기서 막혔는데, 도움 받을수있을까요?

  • @이이경환-g6o
    @이이경환-g6o 2 года назад +1

    스크롤이 쭉죽안내려가고 중간쯤에서 멈추는데 왜그러는 걸까요?

    • @startcoding.official
      @startcoding.official  2 года назад

      코드 전체를 지우고 다시 한번 영상을 따라 입력해 보세요 :)

  • @희두루
    @희두루 2 года назад +1

    초보자에게 희망입니다. 강의 보고 다 따라했습니다 (__) 그런데 저는 img url도 가져오고 싶어서 연습해봤는데 잘 안됩니다...ㅠㅠ img src가 a태그 하위에 있는데 상품 처음 2개는 img 태그가 확인이 되서 잘 가져오는데, 3번째 상품 부터는 img 태그가 없다고 나와요.. 상품제목, 가격, 상품링크 등은 모두 마지막 상품까지 잘 가지고 옵니다. 이게 이미지 특성 때문일까요? 하 ㅠㅠㅠ 몇일째 이걸로 삽질인지,, 혹시 img 따오는 부분도 심화로 가르쳐주실 수 있을지요... (__)

    • @희두루
      @희두루 2 года назад

      참고로 img 태그의 부모 태그인 a 태그는 마지막 상품까지 모두 가져올 수 있는 상황인데 유독 img 태그만 찾을 수가 없네요 ㅠㅠ 아래처럼 디버깅 해봤습니다. [2] 배열 부터는 img 가 none 입니다
      metadata3[0].a.img
      metadata3[1].a.img
      metadata3[2].a.img
      None

    • @startcoding.official
      @startcoding.official  2 года назад

      @@희두루 소스코드를 어떻게 작성하셨는지는 모르겠지만 제가 테스트 해봤을 때는 img src를 잘 가져 오네요 ^^
      아래 코드로 테스트 해보셔요ㅎㅎ
      # 상품 정보 div
      items = browser.find_elements_by_css_selector(".basicList_item__2XT81")
      for item in items:
      name = item.find_element_by_css_selector(".basicList_title__3P9Q7").text
      try:
      price = item.find_element_by_css_selector(".price_num__2WUXn").text
      except:
      price = "판매중단"
      link = item.find_element_by_css_selector(".basicList_title__3P9Q7 > a").get_attribute('href')
      img_src = item.find_element_by_css_selector(".thumbnail_thumb__3Agq6 > img").get_attribute('src')
      print(name, price, link, img_src)

    • @희두루
      @희두루 2 года назад

      @@startcoding.official 답변 주실줄 몰랐는데 너무 감사합니다. 올려주신 소스코드 그대로 복사해서 넣어봤는데도 똑같이 네번째부터는 img src를 못갖고 오네요 ㅠㅠ 이거 제 환경 문제 때문인것 같습니다. ㅠㅠ
      Exception has occurred: NoSuchElementException
      Message: no such element: Unable to locate element: {"method":"css selector","selector":".thumbnail_thumb__3Agq6 > img"}
      (Session info: chrome=99.0.4844.51)
      Stacktrace:
      Backtrace:
      Ordinal0 [0x008769A3+2582947]
      Ordinal0 [0x0080A6D1+2139857]
      Ordinal0 [0x00703A98+1063576]
      Ordinal0 [0x0072FF3E+1244990]
      Ordinal0 [0x0073013B+1245499]
      Ordinal0 [0x007265A1+1205665]
      Ordinal0 [0x00748594+1344916]
      Ordinal0 [0x00726524+1205540]
      Ordinal0 [0x007486A4+1345188]
      Ordinal0 [0x0075834A+1409866]
      Ordinal0 [0x00748366+1344358]

  • @이상윤-q4e1u
    @이상윤-q4e1u 2 года назад +1

    안녕하세요 스타트 코딩님!! 덕분에 잘 배우고 있는 한 학생입니다
    ERROR:chrome_browser_main_extra_parts_metrics.cc(226)
    ERROR:device_event_log_impl.cc(214)]
    이런 오류들이 뜨는데 혹시 무슨 문제가 있을까요?
    무한 스크롤 까지는 잘 작동이 되는데, 아이폰 상품 정보들을 가져오는 부분에서 막혔습니다 ㅠㅠ

    • @startcoding.official
      @startcoding.official  2 года назад

      안녕하세요 상윤님!
      1. 일단 크롬 버전이랑 크롬 드라이버 버전이랑 같은지 확인하고 다시 설치해 보시고요.
      2. 아래 옵션을 추가해 보세요
      options = webdriver.ChromeOptions()
      options.add_experimental_option('excludeSwitches', ['enable-logging'])
      browser = webdriver.Chrome(options=options)

  • @hideonknowledge
    @hideonknowledge Год назад +1

    최상단 상품1개만 반복해서 뜨는데 해당 문제 해결이 가능할까요??ㅜㅜ

    • @startcoding.official
      @startcoding.official  Год назад

      아마도 오타에서 발생한 문제일 겁니다.
      다시 한번 영상을 보면서 새로 코드를 작성해 보시겠어요? :)

    • @haemin426
      @haemin426 Год назад

      @@startcoding.official 예전엔 ul class로 되어 있는데 이젠 ul class가 존재하지 않고 전부 div class로 되어 있어 for루프가 제대로 돌아가지 않는 것일까요?
      저도 최상단 상품 1개만 반복해서 크롤링이 되는데 어떻게 해결하면 될까요..

    • @haemin426
      @haemin426 Год назад

      코드에서 div:nth-child(1)는 항상 첫 번째 자식 요소만 선택한다고 합니다! 그 부분만 지워서 하니까 잘 되네요!!

  • @워누으녜
    @워누으녜 2 месяца назад

    무한스크롤 부분이 안 되는데 어떻게 해야할지 모르겠네요ㅜㅠ 코드는 알려주신 그대로 해봤는데 스크롤이 진행이 안 됩니다ㅠㅜ

    • @startcoding.official
      @startcoding.official  2 месяца назад

      해당 사이트가 업데이트 되면서 코드가 잘 동작하지 않을 수 있습니다!
      무한 스크롤에 대한 개념을 이해하고
      선택자부분만 사이트에 맞게 바꿔준다면 적용이 가능하실 거에요 ㅎㅎ
      # 스크롤 전 상품 개수 확인
      before_cnt = len(driver.find_elements(By.CSS_SELECTOR, ".col-md-4.col-xs-6"))
      while True:
      # 스크롤 끝까지 내리기
      driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)
      time.sleep(1)
      # 스크롤 후 상품 개수 확인
      after_cnt = len(driver.find_elements(By.CSS_SELECTOR, ".col-md-4.col-xs-6"))

      print(before_cnt, after_cnt)
      # 비교 (if) - (break)
      if before_cnt == after_cnt:
      break

      # 스크롤 전 개수 업데이트
      before_cnt = after_cnt

  • @yjy0462
    @yjy0462 2 года назад +1

    너무 잘보고 있습니다. 다 작성후 실행하면 스크롤을 계속 내리고만 있습니다. 마우스로 스크롤을 올려보면 계속 내려가기만하고 다음으로 진행이 안되네요. 크롬창을 닫으면 after_h=browser.execute_script("return window.scrollY") 에서 에러가 발생하네요. chrome not reachable(Session info: chrome=96.0.4664.110) 이렇게 뜹니다. 뭘까요..ㅜㅜ

    • @startcoding.official
      @startcoding.official  2 года назад

      스크롤 멈추는 코드 부분이 제대로 작성되지 않은 것 같은데요... 코드 전체를 지우고 다시 한번 영상을 따라 해보시겠어요??

  • @lionellmessi2236
    @lionellmessi2236 2 года назад

    페이징 처리도 제작 부탁드립니다^^

  • @天安门-w9x
    @天安门-w9x 2 года назад +1

    네이버 검색결과에서 검색한 값이 없으면 특정 문구를 출력하고 종료시키고 싶은데 어떻게 코드를 추가하면 좋을까요?

    • @startcoding.official
      @startcoding.official  2 года назад

      상품 정보 div를 가져오는 부분을 보시면
      items에 리스트가 담겨져 오고 있죠?
      검색한 값이 없다면 items 는 비어 있는 리스트가 됩니다.
      그러면 len(items) 의 값은 0이 되겠죠
      if 문으로 len(items) == 0 일 경우 출력하고 종료하게 만들어 주면 됩니다.
      if len(items) == 0:
      quit()

  • @chaeeunlim7791
    @chaeeunlim7791 2 года назад

    너무 유용한 코드여서 따라만들고 실습하고 있습닏다. 그런데 여기서 더 나아가 다른 정보도 가져오고 싶은데요.
    더 보고싶은 정보는 판매자 정보입니다. F12를 통해 HTML은 볼수있으나 여기서 한번 더 클릭 후 나오는 테이블 형태의 판매자정보까지 크롤링해오는 것을 한번 해보려고 하는데 쉽지 않네요. 이부분 혹시 추가로 코드 알려주실 수 있으실까요? 감사합니다.

    • @startcoding.official
      @startcoding.official  2 года назад

      규정상 유료강의 수강생 분들에게만, 강의내용 외 질문에 답변 드리고 있습니다 ㅠㅠ
      강의 내용에 관한 질문에만 답변드릴수 있는점 양해 부탁드려요 ^^

  • @HARRYMINI
    @HARRYMINI 3 года назад +1

    감사합니다. 마지막까지 잘 따라왔는데, for item in items: TypeError: 'WebElement' object is not iterable 라는 에러메시지가 뜨는 건 왜일까요?

    • @startcoding.official
      @startcoding.official  3 года назад

      태그를 잘못가져와서 그래요~
      items를 가져올때
      오타가 있는지 없는지 확인해보세요!
      - find_elements s빠뜨리신거 같은데

    • @HARRYMINI
      @HARRYMINI 3 года назад

      @@startcoding.official 감사합니다! 덕분에 해결했습니다. 그런데 csv 파일로 저장하는 부분에서 또 에러가... ㅠ.ㅠ File "e:\경로", line 47, in
      csvWriter.writerow([name, price, link])
      ValueError: I/O operation on closed file. 요런 에러가 뜨는데 이유를 알 수 있을까요? 바쁘신데 죄송해요!

    • @startcoding.official
      @startcoding.official  3 года назад

      @@HARRYMINI 이것도 마찬가지로 오타로 인한 에러 일 것 같습니다. 띄어쓰기 들여쓰기 된 것을 잘 확인해 보세요 :)

  • @ARCHIVENULL
    @ARCHIVENULL Год назад

    똑같이 해도 열 구분이 안되는건 왜일까요?

  • @rira-99
    @rira-99 2 года назад

    크롤링 열심히 따라하고 있습니다. 좋은 강의 올려주셔서 감사합니다. :) 아이맥 사용하고 있는데... csv파일 열면 Numbers로 넘어가고, 상품명이 'Apple ¾ÆÀÌÆù 13 ¹Ì´Ï 128GB [ÀÚ±ÞÁ¦]' 이런 식으로 한글이 특수문자로 보여집니다. 혹시 이럴 땐 어떻게 해야 할까요?

    • @아령-b9o
      @아령-b9o 2 года назад

      CSV가 아니라 엑셀로 저장하면 어떨까요

  • @junym929
    @junym929 2 года назад

    셀레니움으로 짠 코드명을 뷰티풀소프에 코드를 넣어도 동작이 되는건가요?

    • @startcoding.official
      @startcoding.official  2 года назад

      동작이 되지 않습니다 ㅎㅎ

    • @junym929
      @junym929 2 года назад

      @@startcoding.official 코드를 뷰티풀소프에 맞는것을 알아가야겠네요

  • @bisgroup21k
    @bisgroup21k 2 года назад

    상품 이미지는 어떻게 가져 오나요? src

  • @0kleio0
    @0kleio0 2 года назад +2

    좋은 영상 감사합니다.
    이 영상에서만 에러를 많이 겪어서 제 해결 방향 적어 놓겠습니다.
    find_element_by_* commands are deprecated. Please use find_element() instead
    browser.find_element_by_css_selector("body").send_keys(Keys.END)
    에러코드에서 find_element_by 를 쓰지 말라고 해서 구글링으로 find_element() 사용법을 찾았습니다.
    "from selenium.webdriver.common.by import By " 이거를 임포트 하고
    # item info
    items = browser.find_elements(By.CSS_SELECTOR, ".basicList_info_area__17Xyo")
    for item in items:
    name = item.find_element(By.CSS_SELECTOR, ".basicList_title__3P9Q7").text
    try:
    price = item.find_element(By.CSS_SELECTOR, "div.basicList_price_area__1UXXR > strong > span > span.price_num__2WUXn").text
    except:
    price = "price null"
    link = item.find_element(By.CSS_SELECTOR, ".basicList_title__3P9Q7 > a").get_attribute('href')
    print(name, price, link)
    이렇게 변경하여 썼습니다.
    가격쪽은 .price_num__2WUXn 만 있으면 안읽혀서 Copy selector로 단일 주소 뽑아서 앞부분을 지우고 적용했습니다.
    F12 소스 창에서 Copy -> Copy selector 로 복사된 밑의 문구에서 " " 부분 제거
    " #__next > div > div.style_container__1YjHN > div.style_inner__18zZX > div.style_content_wrap__1PzEo > div.style_content__2T20F > ul > div > div:nth-child(23) > li > div.basicList_inner__eY_mq > div.basicList_info_area__17Xyo > " div.basicList_price_area__1UXXR > strong > span > span.price_num__2WUXn

  • @java-spring-kotlin
    @java-spring-kotlin 2 года назад +1

    파일 입출력 이것만 보면 어질하네요

  • @johnmicle913
    @johnmicle913 Год назад

    크롤링 프로그램 제작 가능하신가요?

    • @startcoding.official
      @startcoding.official  Год назад

      kkj6369@naver.com 메일로 크롤링하고자하는 사이트 양식등을 보내주세요 ^^

  • @startcoding.official
    @startcoding.official  Год назад

    네이버 쇼핑 예제가 조금 바뀌었습니다.
    영상의 코드는 현재 정상 동작하지 않습니다.
    인프런 사이트에 무료 수강신청 시
    정상 동작하는 코드를 바로 확인할 수 있습니다.
    이것이 진짜 크롤링이다 - 기본편
    bitly.ws/Sjsk
    ===========================
    프로그램 동작 완료하고 꺼지는 것은 정상이지만
    창이 꺼지는 것을 막으려면 아래 3가지정도 해결방법이 있습니다 ^^
    1. 주피터노트북을 이용해서 실행 상태를 유지하게 만든다.
    -> 아래 유튜브 영상 참고
    ruclips.net/video/1tKPqQmXM98/видео.html
    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("c://chromedriver.exe", options=chrome_options)
    # 웹페이지 해당 주소 이동
    driver.get("www.naver.com")
    -> 아래 유튜브 영상 참고
    ruclips.net/video/LoPvjfABlBA/видео.html
    3. 무한루프 또는 input() 이용해서 강제로 종료 방지
    코드 마지막에 input() 명령을 넣어
    사용자의 입력을 받기 전까지 프로그램이 종료 되지 않도록 한다.

    • @startcoding.official
      @startcoding.official  Год назад

      어렵고 불친절한 코딩 강의에 지치셨나요?
      스타트코딩이 여러분들을 힘껏 도와 드리겠습니다.
      ★ 스타트코딩과 함께 코딩 공부하기
      startcoding.liveklass.com/p/review

  • @YungilovesGirlsDay
    @YungilovesGirlsDay 2 года назад +2

    .text 하고 .get_attribute() 부분에서 계속 AttributeError 가 뜹니다..

    • @YungilovesGirlsDay
      @YungilovesGirlsDay 2 года назад +1

      이거 해결했습니다!!! 똑같은 에러 뜨시는 분들 이 사이트 한 번 확인해보십쇼!!

    • @jykim1581
      @jykim1581 Год назад

      ​@@YungilovesGirlsDay 어떤사이트일까요

  • @buddhako846
    @buddhako846 2 года назад

    스크롤 까지는 잘 해결 했는데 리스트화에서 막히네요 ㅠㅠ
    이리저리 구글링 해봤는데 문제가 뭔지 모르겠어요 들여쓰기 오타 다 확인했는데 어떤 게 문제일까요..?
    # 상품정보 div
    items = browser.find_elements(By.CSS_SELECTOR,"basicList_info_area__17Xyo")
    for item in items:
    name = item.find_element(By.CSS_SELECTOR,'basicList_title__3P9Q7').text
    try:
    price = item.find_element(By.CSS_SELECTOR,'price_num__2WUXn').text
    except:
    price = '판매중단'
    link = item.find_element(By.CSS_SELECTOR,'price_num__2WUXn > a').get_attribute('href')
    print(name, price, link)

  • @박형규-z5c
    @박형규-z5c 2 года назад

    selenium 입문자입니다.
    재밌는 강의와 유익한 내용에 감사드리며 잘 보고 있습니다. 덕분에 도움 많이 되고 있습니다.
    실습중 잘 안되는 부분이 있어 문의드립니다.
    무한스크롤 작업시
    selenium.common.exceptions.JavascriptException: Message: javascript error: windows is not defined 이런 에러가 나면서 실행이 안되는거 같은데
    원인과 해결 방법이 있는건지요?

    • @startcoding.official
      @startcoding.official  2 года назад +1

      네 안녕하세요 ^^
      잘 동작하는 코드인데 오타가 있는지 조금 더 정확히 확인해 보세요 :)

    • @박형규-z5c
      @박형규-z5c 2 года назад

      @@startcoding.official ㅎ 오타네요 답글 감사합니다~~

  • @laughingshuttle
    @laughingshuttle Год назад

    클래스 101 들으면서 유튜브 듣고 오라고 해서 실습 진행중인데 아래와 같이 코드를 짜니 마지막 67line에서 href 속성을 가져올 수 없다고 하네요...ㅠ
    AttributeError: 'WebElement' object has no attribute 'href'
    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
    # 브라우저 꺼짐 방지
    chrome_options = Options()
    chrome_options.add_experimental_option("detach", True)
    # 불필요한 에러 메시지 없애기
    chrome_options.add_experimental_option("excludeSwitches",["enable-logging"])
    service = Service(executable_path=ChromeDriverManager().install()) #Service라는 객체를 만들어서 service라는 변수
    driver = webdriver.Chrome(service=service, options=chrome_options)
    # 웹페이지 해당 주소 이동
    driver.get("www.naver.com")
    driver.implicitly_wait(10) # 로딩이 끝날 때 까지 10초까지는 기다려줌
    # 쇼핑 메뉴 클릭
    shopbtn = driver.find_element(By.CSS_SELECTOR, 'a.nav.shop')
    shopbtn.click()
    time.sleep(2)
    # 검색창 클릭
    searchbtn = driver.find_element(By.CSS_SELECTOR, "input._searchInput_search_text_fSuJ6")
    searchbtn.click()
    time.sleep(2)
    # 검색어 입력
    searchbtn.send_keys('아이폰 14')
    searchbtn.send_keys(Keys.ENTER)
    # 스크롤 전 높이
    before_h = driver.execute_script("return window.scrollY")
    # 무한 스크롤
    while True:
    # 맨 아래로 스크롤을 내린다.
    driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)
    # 스크롤 사이 페이지 로딩 시간
    time.sleep(2)
    # 스크롤 후 높이
    after_h = driver.execute_script("return window.scrollY")
    if after_h == before_h:
    break
    before_h = after_h
    # 상품 정보 div
    items = driver.find_elements(By.CSS_SELECTOR, ".basicList_info_area__TWvzp")
    for item in items:
    name = item.find_elements(By.CSS_SELECTOR, ".basicList_title__VfX3c")
    try:
    price = item.find_elements(By.CSS_SELECTOR, ".price_num__S2p_v")
    except:
    price = "판매중단"
    price = item.find_elements(By.CSS_SELECTOR, ".price_num__S2p_v")
    link = item.find_element(By.CSS_SELECTOR, ".basicList_title__VfX3c > a").__getattribute__('href')
    print(name, price, link)

    • @startcoding.official
      @startcoding.official  Год назад +1

      가져온 태그가 href 속성이 없어서 발생하는 에러입니다, 태그 선택자가 제대로 되어있는지 확인해 보세요 :)

    • @laughingshuttle
      @laughingshuttle Год назад

      @@startcoding.official 희한하네요ㅜ 네이버쇼핑 보니 href 태그가 있긴하던데ㅜ 구글링도 더해봐야겡ㅎ네요