전체 스터디
전체 스터디
  • 전체보기
  • 질문
  • 숙제
내 스터디
  • 스터디에 참여해보세요!
다른 스터디
  • 파이썬 기초 스터디
  • 네이버 정복 파이썬 크롤링
  • 페이스북 만드는 웹개발
  • 데이터사이언스 12시간 입문기
  • 파이썬 구글 Sheet 연동
  • 엑셀서당 - 훈장님의 기초 엑셀 트레이닝
  • 고전게임을 만들며 배우는 코딩의 기초
  • 내 업무를 거의 자동화하는 방법
  • SQL 입문 4시간
  • QR 코드 프로그래밍
  • 비전공자 개발지식 총정리
  • 초고속 퍼포먼스 마케터
  • 왓챠 함께 만들기
  • 퍼블리셔 초고속 입문기
  • 한국형 커뮤니티 만들기
  • airbnb 프론트엔드 카피 프로젝트
  • 워드프레스로 쿠팡 만들기

week 6 요약 자료 올립니다!

송세린

안녕하세요 질문 드립니다!

stage 4 코드를 입력하고 런 했는데 에러가 뜹니다!

"/Users/serene/PycharmProjects/google yon seub/venv/bin/python" "/Users/serene/PycharmProjects/google yon seub/stage04.py" Traceback (most recent call last): File "/Users/serene/PycharmProjects/google yon seub/stage04.py", line 2, in <module> from oauth2_client.service_account import ServiceAccountCredentials ModuleNotFoundError: No module named 'oauth2_client.service_account' Process finished with exit code 1 


이렇게 뜨고 에러가 나는데 어떻게 해야될까요 ㅠㅠ


이게 안되는 원인이, 사용자인증 정보 만들고 나서 client email을 구글시트 공유에 붙여넣기 하고 나면 메일로 도메인을 찾지 못해서 추가하지 못했다고 뜨는데 그거랑 관련 있는지 궁금합니다

자세히 보기
최도근
7월 28일 16:46

필요한 패키지(oauth2)가 설치가 되지 않은 상태입니다.

패키지 설치 확인해주세요!

좋아요 0

    Name 부분을 정리할때

    df.loc[ df['Name'].str.contains('Mr\.'), 'Name'] = 'Mr.'

    에서 '\'가 들어가는 이유가 뭔지 궁금합니다!

    자세히 보기
    최도근
    7월 14일 19:38

    pandas의 .contains(X)에서 X자리에 찾는 문자열을 넣을 수 있죠? 일반적인 숫자, 알파벳, 한글은 그냥 넣어도 되지만 .은 다른 기능도 숨어 있습니다. 

    이런 특수문자 앞에 \를 넣어주면 그 기능을 없애고 실제 문자만 검색합니다. 

    mr\. → mr.
    mr\[3\] → mr[3]
    우측이 실제 검색되는 문자열 

    보다 정교한 검색이 가능하도록 몇몇 특수문자에 특수한 기능이 딸려 있는데 그걸 다시 없애는 기능이예요.(심화: 정규식 참고)

    좋아요 0

      레벨업 부분에서 질문드립니다!

      f= open('test.csv', 'w)

      f=open('test.csv','r') 

      의 차이가 파일을 불러오는건 동일한데 위의 경우에는 파일 작성이고 

      밑의 경우에는 읽기전용으로 보면 되는건가요?


      또, f.readline() 은 한줄씩 프린트 하는건가요?!

      자세히 보기
      최도근
      7월 14일 19:40

      답변이 늦어 죄송합니다, 못보고 넘어갔습니다.

      아래의 경우는 읽기만 하는게 맞습니다:)

      readline은 한줄씩 읽는 것(불러들이는 것)입니다.

      좋아요 0

        WEEK4 요약자료 올립니다!

        Week 3 요약입니다!

        고한석
        6월 8일 23:38 · 경희)KHU알라 part2

        아래에서 알려주신 방법으로 해결이 되지 않아 파일을 올려 질문 드립니다!!

        최도근
        6월 11일 12:17

        해결법:
        address_box = driver.find_element_by_css_selector( "div.box_search input#keyword.input_country.ui-autocomplete-input")를
        address_box.clear() 위에 추가할 것

        search = driver.find_element_by_css_selector("button#searchButton")를
        search.click() 바로 위로 옮길 것

        문제 원인:
        동적페이지는 매 클릭(무언가 페이지에 변화를 주는 행위)마다 페이지 변동이 생깁니다. 페이지 변동이 생겼다는 건, 이전에 선택한 무언가도 변할 수 있다는 것 입니다.

        (1) A 시점에 address_box를 find해서 찾음
        (2) 무언가 click
        (3) A 시점에 찾은 address_box는 더이상 존재하지 않음(페이지가 바뀌었으므로)
        (4) 따라서 address_box를 다시 find 해줘야함

        좋아요 0

          파이썬 상에서는 수집이 되는데 엑셀로는 왜 수집이 안될까요?

          최도근
          6월 8일 21:56

           print는 콘솔(검은바탕, 흰색글자가 나오는 하단 화면부)에 출력하고 sheet.명령어는 excel로 출력합니다.

          sheet에 출력하는 부분을 누락하셨겠죠?

          좋아요 0
            김민지
            6월 8일 21:04

            코드에서 잘못된 것 찾았습니다..ㅎㅎ해결했어요!

            좋아요 0
              고한석
              6월 8일 19:15 · 경희)KHU알라 part2

              질문있습니다!

              셀레니움에서 반복해서 데이터를 가져오고 싶은데 오류가 뜨네요..

              sheet는 따로 지정을 했었고, 캡처 편의상 잠깐 뺏었어요

              여기서 오류가 있는 라인은 clear()구문 입니다.

              delete버튼 click(), refresh() 등 할 수 있는 건 다 해본 것 같아요..

              자세히 보기
              최도근
              6월 8일 22:04

              우선 아래 두가지 방법 중 하나를 시도해보세요!

              일시적으로, 혹은 아직 해당 input을 다룰 준비가 안되었을때 나타나는 오류입니다.

              (1) clear() 바로 위에서 time.sleep을 이용해 충분한 시간을 기다려보세요.

              (2) clear() 바로 위에서
              new WebDriverWait(driver, timeout).ignoring(StaleElementReferenceException.class).until(ExpectedConditions.elementToBeClickable(By.id("address box의 선택자")));

              그래도 해결이 안된다면 코드파일 자체를 업로드해주세요!

              좋아요 1
              고한석
              6월 8일 23:38

              정말 감사합니다!! 하지만 문제가 해결되지 않아 새로운 질문으로 업로드 합니다ㅠㅠ 감사합니다.

              좋아요 0

                week6 복습문제 업로드 합니다. 

                이처럼 태그 이름에 띄어쓰기가 있으면 어떻게 표현해야 하나요? 개발자도구에서 Ctrl+F로 찾을 때 띄어쓰기를 쓰면 자손으로 인식해서 헷갈립니다.

                최도근
                5월 30일 14:32

                태그상에 <태그 class="AA bbb"> 이렇게 나타나있다면

                클래스 이름이 "AA bbb"가 아니라, AA 클래스와  bbb 클래스를 모두 가지는 태그가 됩니다.(이름이 두개인 느낌?)

                따라서 현상황에서는 wrap_tit 클래스와 mg_tit 클래스 둘 모두를 갖는 경우구요.

                검색시에는 div.wrap_tit 혹은 div.mg_tit로 검색하시면 됩니다.
                두가지 이름을 모두 가진 경우로 처리하시려면, div.wrap_tit.mg_tit 로 검색해보세요! (세가지 모두 검색될 것)

                좋아요 0

                  3주차 챌린지2를 진행하고 있는데요 (Y combinator) 출처 선택자를 찾았는데 출처가 없는 기사가 있어서 중간에 오류가 나더라구요ㅠㅠㅠㅠ 어떻게 해결할 수 있을까요..?

                  자세히 보기
                  최도근
                  5월 30일 14:30

                  우선 출처가 없어서 오류가 난다는것을 캐치하는것부터 쉽지 않은건데 엄청 잘하셨구요!

                  현재까지 배운 내용으로는 해당 출처부분을 삭제하고 수집하시거나, 항상 존재하는 좀 더 상위의 선택자를 선택하시는게 좋습니다.(이때 오류는 안나도 출처가 안나오거나 원치 않는 데이터가 나올 수도 있죠)

                  (뒤에 이어질 주차에서 오류가 났을때 처리방법을 따로 설명드릴 예정입니다)

                  좋아요 0

                    파이참에서 하던 중 어플리케이션 import 가 안되는 현상이 있습니다.. 왜 그럴까요?  

                    최도근
                    6월 2일 11:41

                    7번째 줄, 마지막 부분에 ) 닫는 괄호가 빠졌습니다!

                    아래 숙제제출이랑 같은 글로 착각해서 늦게 봤네요:)

                    좋아요 0
                      황의린
                      5월 26일 23:57 · (숙명)송알라 part1

                      week6_stage 4에서 '오골계'를 검색하고 try except 문을 쓰지 않았을 때 오류가 안나서 저만 그런가 해서 질문 올립니다.  

                      n을 1~20까지로 넣어주면, 15페이지까지밖에 없기 때문에 

                       if n%5!=0: 

                                    page_bar[n%5+1].click() 

                       else: 

                                     page_bar[6].click() 

                      위와 같은 코드에 의해 n=15일 때 page_bar[6]에 해당하는 요소가 없기 때문에 index out of range 오류가 떠야 한다고 알고 있었는데

                       오류가 뜨지 않고, 15페이지까지 데이터가 출력된 후 다시 15페이지, 12페이지, 13페이지, 14페이지 데이터가 차례로 출력됩니다. 

                      15페이지에서 '>'버튼을 누를 수 없는 형태로 되어있는데, 왜 오류가 안뜨고 이상한 페이지를 출력하는걸까요..? 

                      위의 코드를 '질문1.docx'에 옮겼습니다.  


                      또한, '질문2.docx'에 옮긴 코드와 같이 '오골계'를 검색한 후 

                      page_bar = driver.find_elements_by_css_selector("div.paginate>*")

                       page_bar[6].click() 

                      의 코드를 세번 반복해서 '>'의 버튼을 누를 수 없는데도 누르도록 코드를 작성했을 때 오류가 나지 않고 11페이지의 데이터가 출력되었습니다.  

                      제가 코드를 잘못 작성한것인가요?   

                      자세히 보기
                      임수영
                      5월 27일 01:25

                      다른 분도 같은 질문을 해 주신 분이 있어서 멘토님의 답변을 빌려서 댓글 답니다! 두 질문 다 결과적으로는 같은 맥락이라서 한번에 설명 드릴게요!

                      .click하는 경우는 말 그대로 웹페이지 위에서 클릭하기 때문에 홈페이지 상에 다른 요소가 클릭하고자하는 버튼을 가리고 있으면 클릭이 안됩니다. 즉, 이 함수가 해당 페이지로의 이동을 뜻하는 것이 아닌, 해당 페이지에서 단순히 그 버튼을 클릭하는 작동만 하게 됩니다. 그래서 p15의 경우에서 오류를 발생시키지 않고, 다음 경우 page[16%5+1].click()을 수행하게 됩니다... 

                      https://wkdtjsgur100.github.io/selenium-does-not-work-to-click/
                      구글링을 해 보았을 때, 해당 참고 페이지의 2번째 코드 블록을 참고하시면, **send_keys(Keys.Enter)** 로 쉽게 해결할 수 있습니다! 해당 버튼에 포커스를 두고 엔터키를 누르는 기능을 하는데요, 엔터키를 보내는 경우는 요소가 가려져있는 것과 관계없이 엔터키를 보낼 수 있어서 오류가 나지 않는다고 합니다... 그래서 첫번째 질문 코드를 맞게 수정하면

                      from selenium.webdriver.common.keys import Keys 추가

                      try :
                           page_bar = driver.find_elements_by_css_selector("div.paginate>*")
                           if n % 5 != 0 :
                                page_bar[n % 5 + 1].click()
                           else :
                                page_bar[6].send_keys(Keys.ENTER)
                      except :
                           print("수집 완료")
                           break

                      로 해결 가능합니다. 두 번째 질문도 같은 방법으로 .send_keys(Keys.ENTER)로 바꿔주면, 에러가 뜨는 걸 정상적으로 확인할 수 있을 거에요! 답변이 도움이 되길 바랍니다 :)

                      좋아요 1
                      황의린
                      5월 27일 17:07

                      감사합니다!!

                      좋아요 0

                        week5리뷰와 복습문제 업로드합니다

                        너무 고민말고 물어보세요!
                        kakao 카카오톡 상담
                        kakao 적성 테스트
                        부담없이 채팅 상담하세요. 친절한 코알라가 대기중입니다:)