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

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리뷰와 복습문제 업로드합니다

                  크롤링 하는과정에서 다음과 같은 에러가 발생하였습니다. 발생주기도 계속 변하는데 어떻게 해결할 수 있을까요?

                  requests.reception.ConnectionError

                  자세히 보기
                  최도근
                  5월 26일 13:33

                  대상 사이트에서 강동인님의 아이피에 대해 접속을 차단한 경우일 수 있어요.(너무 요청을 많이해서) 이때 request는 몇번더 접속을 시도해보는데 그것조차 실패했다는 문구입니다. 요청횟수를 줄이거나 접속자의 ip를 바꾸는게 방법입니다.

                  좋아요 1
                  김정진
                  5월 25일 21:25

                  https://cnpnote.tistory.com/entry/PYTHON-%EC%B5%9C%EB%8C%80-%EC%9E%AC%EC%8B%9C%EB%8F%84-%ED%9A%9F%EC%88%98%EA%B0%80-URL-%EC%B4%88%EA%B3%BC%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4

                  짧은 시간 안에 하나의 IP주소에 너무 많은 요청을 보내서 생기는 오류같아! 링크를 확인해보면 6가지 해결방법이 있는데, 참고할만 해서 올려봅니닷:)

                  좋아요 1
                  박선민

                  파이참을 설치할 때, 32bit launcher가 뜨지않습니다. 어떻게 해야할지 알려주시면 감사하겠습니다.

                  최도근
                  5월 26일 13:33

                  본인의 컴퓨터가 64bit라면 굳이 32bit launcher를 맞춰 설치하실 필요는 없습니다:) 요즘 대부분 64bit 기반이니 일단 설치해보시고 문제 생기면 재설치해보세요!

                  좋아요 0
                    이은지

                    화면과 동일하게 코드를 타이핑했습니다! 그런데 해당 과정에서 오류가 나는데 넘어가질 않아서, 도와주시면 감사하겠습니다!

                    최도근
                    5월 26일 13:34

                    해당 구글시트 파일에 대한 권한이 없다고 나와요. 공유설정을 꼭 해주셔야 합니다. (강의 참고)

                    좋아요 0
                      유지희
                      5월 18일 23:21 · (숙명)송알라 part1

                      <윤희에게>라는 영화까지는 포스터 수집이 정상적으로 이루어지는데, 그 다음 영화인 <퍼니게임>부터는 수집이 안되면서 해당오류가 뜨는데, 혹시 저만 그런건가 해서 질문해봅니다....! 

                      자세히 보기
                      최도근
                      5월 19일 13:07

                      퍼니게임은 청소년관람불가 영화입니다.
                      저희는 로그인이 안된 상태로 request를 하다보니 해당 페이지에 접근을 할 수 없어 이러한 문제가 발생했어요.

                      로그인하지 않았을때 접근할 수 없는 페이지를 스킵하는 방안을 마련하셔야 합니다.

                      좋아요 1
                      최도근
                      5월 19일 15:54

                      https://aiden-write.tistory.com/227

                      동국대 리더 강협님의 솔루션 참고해주세요!

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