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

Titanic 데이터처럼 테이블 형식으로 된 데이터 셋에서, 예측하고자 하는 feature(ex. 생존여부)에 각 feature(ex. 나이, 성별) 들이 영향을 미치는 정도를 수학적으로 계산해내는 이론이 있을까요??

titanic 데이터 같은 경우는 사실 사고 당시에 아이들과 여성들을 먼저 구명보트에 태웠다는 사실을 바탕으로 생존에 중요한 영향을 끼치는 feature가 성별, 나이 임을 직관적으로 알 수 있었는데, 이러한 정보를 알지 못하는 데이터 셋에서는 그러한 feature 들을 어떻게 골라내는지 궁금합니다.

자세히 보기
최도근
11월 18일 18:32

가장 쉬운 방법으로 상관계수를 구할 수 있습니다. (pearson 계수) 곧 저희가 배울 내용이기도 합니다..!

좋아요 0
    한윤
    11월 18일 19:02

    앗.. 배울 내용이었군요.. 죄송합니다. 답변 감사드립니다 !!

    좋아요 0
      김채림
      11월 16일 22:32 · 한양)코딩좀하냥 part1

      카카오 맵 검색 과정에서 이러한 코드를 작성하면,

      검색 버튼이 눌리지 않고 아래와 같은 에러코드가 뜨는데 저희가 어느 부분을 놓친건지 궁금합니다ㅠㅠ!


      element click intercepted: Element <button type="button" id="search.keyword.submit" class="go ico_search btn_search active">...</button> is not clickable at point (347, 91).

      자세히 보기
      최도근
      11월 18일 18:39

      button 선택자 부분을 button.btn_search.go 로 바꾼 다움에 재시도해보시겠어요? 확인 후 피드백 부탁드려요.

      좋아요 0
        한준혁
        11월 12일 21:15 · 명지)MRT part1

        안녕하세요. 6주차 stage2에서 셀레니움을 이용해서 데이터 수집하는 내용에서 질문드립니다. 


        1) 네이버 지도 신버전에서 검색하는 것까지는 구현을 했는데, 중간에 다음과 같은 오류가 발생합니다. 어디가 문제인건지 모르겠습니다 ... ㅠ

        Traceback (most recent call last):
          File "C:/Users/준혁/PycharmProjects/coala_crawling1/week6/week6_2(new version).py", line 17, in <module>
            search_box.send_keys("치킨")
          File "C:\Users\준혁\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 479, in send_keys
            'value': keys_to_typing(value)})
          File "C:\Users\준혁\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
            return self._parent.execute(command, params)
          File "C:\Users\준혁\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
            self.error_handler.check_response(response)
          File "C:\Users\준혁\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
            raise exception_class(message, screen, stacktrace)
        selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
          (Session info: chrome=78.0.3904.97)
        ## 여기부터는 제가 작성한 코드입니다.
        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
        import time
        
        # 1 웹드라이버 켜기
        driver = webdriver.Chrome("./chromedriver")
        
        # 2 네이버 지도 접속하기
        driver.get("https://map.naver.com/v5")
        
        # 3 검색창에 검색어 입력하기
        driver.find_element_by_css_selector("button#intro_popup_close").click()
        time.sleep(2)
        first_sb = driver.find_element_by_css_selector("span.span_search").click()
        search_box = driver.find_element_by_css_selector("input.input_search")
        time.sleep(2)
        search_box.send_keys("치킨")
        
        # 4 검색버튼 누르기
        search_box.send_keys(Keys.RETURN)
        # 지연 시간 추가
        time.sleep(2)
        
        # 5 검색 결과 확인하기
        
        # 컨테이너 : div.list_search div.search_box
        stores = driver.find_elements_by_css_selector("div.list_search div.search_box")
        
        for s in stores:
            # 이름(span.search_title_text)
            # 주소  (span.search_text.address)
            # 연락처 (span.search_text.phone)
        
            name = s.find_element_by_css_selector("span.search_title_text").text
            address = s.find_element_by_css_selector("span.search_text.address").text
            phone = s.find_element_by_css_selector("span.search_text.phone").text
        
            print(name)
            print(address)
            print(phone)
        
        driver.close()


        자세히 보기
        김지수
        11월 13일 02:13

        안녕하세요:) 답변이 마음에 드실지는 모르겠으나 답변 드립니다.

        아마도 페이지 로딩이 끝나기 전에 element를 참조해서 오류가 생긴 듯 합니다. driver.implicitly_wait나 WebDriverWait로 페이지 로딩이 끝날 때까지 대기한 후 호출하시거나, 

        # 3 검색창에 검색어 입력하기 

        driver.find_element_by_css_selector("button#intro_popup_close").click() 

        time.sleep(2) 

        first_sb = driver.find_element_by_css_selector("span.span_search").click() 

        search_box = driver.find_element_by_css_selector("input.input_search") 

        time.sleep(5) // 이 과정에서 delay를 많이 주면 페이지 로딩이 끝난 후 치킨을 검색하게 되므로 제 컴퓨터에서는 잘 실행이 되네요 :) 

        search_box.send_keys("치킨")

        좋아요 4
        김지수
        11월 13일 02:21

        살짝 TMI 같을 수도 있으나..

        time.sleep 은 무조건적인 시간 지연을 의미하지만, driver.implicitly_wait은 selenium에서만 사용되는 method로, time.sleep과 동일하게 driver.implicitly_wait(5) 의 식으로 적어줍니다.

        차이가 있다면 time.sleep은 정말 시간 지연의 의미만 있지만, driver.implicitly_wait은 설정한 시간 (예시로 5초) 이 지나도 브라우저에서 parsing이 끝나지 않으면 error message를 내보낸 뒤 프로그램을 종료하는 것이라고 하네요 !!

        저도 답변하면서 driver.implicitly_wait에 대해 배웠습니다 :)

        좋아요 5
        최진영

        안녕하세요:) 수업과 별개로 다른 사이트를 크롤링하다가 궁금한 점이 있어 질문드립니다.

         영화명이 나열된 목록의 페이지에서 '영화명'을 클릭하면 영화상세정보에 대한 팝업창이 뜨고 그 안에 있는 데이터를 크롤링을 하고 싶어서 href속성을 이용하려고 봤더니 #이라는 문자만 있고, 그 링크에 대한 정보는 onclick에 있는 것 같더라구요!

         그래서 onclick 속성을 이용해서 해당 버튼을 클릭하고 그 안의 내용을 크롤링하는 방법이 있는 지 궁금합니다!

        자세히 보기
        최도근
        11월 8일 10:06

        진영님 안녕하세요~

        href는 해당 주소로 이동하는 것이고, onclick은 그 안에 정의된 명령을 수행합니다. 주소이동 같은 경우 아주 쉽게 처리할 수 있는 일반적인 웹 프로세스입니다. 반면 onclick은 개발자가 마음대로 정의하는 프로그래밍 블럭으로 처리방법이 다소 까다롭습니다.

        이 부분은 selenium을 이용하여 일종의 로봇브라우저를 통해 6주 과정에서 함께 다뤄보니 조금만 기다려주세요:)

        좋아요 0
          김아원

          5주차과제

          정래훈
          11월 5일 21:44 · 서울)샬라샬라 part1

          5주차 숙제에서 값을 엑셀에 저장할 때 궁금한게 생겨 질문합니다!

          import requests
          from bs4 import BeautifulSoup
          import openpyxl
          
          wb = openpyxl.Workbook()
          sheet = wb.active
          sheet.append(['제목', '평점', '장르', '감독', '배우'])
          
          raw = requests.get("http://ticket2.movie.daum.net/Movie/MovieRankList.aspx",
                             headers = {"User-Agent":"Mozilla/5.0"})
          html = BeautifulSoup(raw.text, 'html.parser')
          movies = html.select("div.desc_boxthumb")
          
          for m in movies:
              title = m.select_one("strong.tit_join > a")
              url = title.attrs["href"]
              raw_each = requests.get(url, headers = {"User-Agent":"Mozilla/5.0"})
              html_each = BeautifulSoup(raw_each.text, 'html.parser')
              try:
                 container = html_each.select_one("div.movie_summary")
                 title = container.select_one("div.movie_summary strong.tit_movie").text
                 rate = container.select_one("em.emph_grade").text
                 genre_all = container.select_one("dd:nth-of-type(1)").text
                 director_all = container.select("dd:nth-of-type(5) a")
                 actor_all = container.select("dd:nth-of-type(6) a")
              except:
                  print(title.text.strip(), "상세페이지가 없습니다.")
                  print("-" * 50)
                  continue
              print("제목: \n" + title)
              print("평점: \n" + rate)
              print("장르: \n" + genre_all)
              print("감독:")
              for d in director_all:
                  print(d.text)
              print("배우:")
              for a in actor_all:
                  print(a.text)
              print("-" * 50)
          
              director = []
              for d in director_all:
                  director.append(d.text)
              director_string = ", ".join(director)
              actor = []
              for a in actor_all:
                  actor.append(a.text)
              actor_string = ", ".join(actor)
          
              sheet.append([title, rate, genre_all, director_string, actor_string])
          wb.save("daummovie.xlsx")

          감독과 배우처럼 해당되는 값이 많은 경우, 파이썬에 출력할 때는 리스트에서 각 요소를 추출해서 텍스트 파일로 변환해서 하나하나씩 출력했지만, 엑셀에 값을 저장할 때는 전체 값을 문자열로 변환해서 추가해야 하다보니 리스트 값을 추출해서 텍스트만 남기고 다시 리스트로 합쳐준 다음에 그 리스트를 문자열로 변환했습니다. 다만 방법이 너무 번거로운 것 같아 효율적인 방법이 있는지 알고 싶습니다!

          자세히 보기
          최도근
          11월 7일 10:29

          래훈님 안녕하세요~

          번거롭다 생각하시겠지만 사실 이미 좋은 방법을 적용하신 거구요.

          코드 양을 개선하고자 한다면 아래처럼 할 수 있겠네요.

          director_string = ""
          
          for d in director_all:
            director_string = director_string + d.text + ", "

          마지막에 ", "가 남는 문제는 문자열 슬라이싱 arr[:-2] 같은 방식으로 쉽게 처리할 수있습니다.

          좋아요 5
          정래훈
          11월 7일 12:19


          좋아요 1
          정래훈
          11월 7일 12:21

           친절한 답변 감사합니다!   :)

          좋아요 1
          김희수
          11월 3일 15:11 · 동국)파뿌리 part1

          5주차 challenge1에서 감독, 배우를 수집할 때, 리스트를 사용해서 다음과 같이 코드를 짜면 

          for movie in movies:
              title = movie.select_one("h4 a").text.strip()
              info = movie.select("div.txt-block")
              director = info[0].select("span > a")
              actor = info[1].select("div.txt-block > a")
           
          
              print("제목:", title)
          
              print("감독: ", end="")
              for d in director:
                  print(d.text,end = " ")
          
              print("\n배우: ",end="")
              for a in actor:
                  print(a.text,end= " ")
          
              print()
              print("="*50)

          첫번째 사진처럼 잘 되는데 

          nth-of-type을 사용해서

          for movie in movies:
              title = movie.select_one("h4 a").text.strip()
              director = movie.select("div:nth-of-type(3) span > a")
              actor = movie.select("div:nth-of-type(4) > a")
          
              print("제목:", title)
          
              print("감독: ", end="")
              for d in director:
                  print(d.text,end = " ")
          
              print("\n배우: ",end="")
              for a in actor:
                  print(a.text,end= " ")
          
              print()
              print("="*50)

          두번째 사진처럼 감독 부분에 1 2 3 4...가 나온 후 감독 이름이 나오더군요. 왜 이럴까요?

          자세히 보기
          최도근
          11월 5일 10:43

          이 코드를 변경해보세요

          movie.select("> div:nth-of-type(3) span > a")


          원리설명

          아래와 같은 코드가 있습니다.

          <div class="test">
            <div>안녕1!</div>
            <div>안녕2!
              <div>안녕2-a</div>
            </div>
            <div>안녕3!</div>
          </div>


          div.test 아래에 있는 세번째 div를 선택하고자 할 때
          div.test div:nth-of-type(3) 라고 작성하시겠죠?

          이때 예상되는 선택은 안녕3! 부분입니다.

          여기서 문제가 발생하는데요,
          실제로 test아래에서 3번째 div는 안녕3!이 아닌, 안녕2-a입니다.

          div.test 아래에는 총 4개의 자손 div가 있습니다.
          안녕1! / 안녕2! / 안녕2-a / 안녕3!

          div.test div:nth-of-type(3) 대신에
          div.test > div:nth-of-type(3)
          자식관계로 정의하면
          기대한 대로 안녕3!을 선택할 수 있습니다.

          div.test 아래에는 총 3개의 자식 div가 있기 때문입니다.
          안녕1! / 안녕2! (안녕2-a) / 안녕3!

          <span style="font-size: 1.2em;">
          </span>

          <span style="font-size: 1.2em;">자손/자식 관계를 설명하는 1주차를 다시 복습해보세요!</span>


          Q) 크롬에서 검색했을 땐 왜 제가 생각한것처럼 나오나요?

          html에는 굉장히 많은 규칙들이 존재하고 합의되지 않은 세부 문법들이 존재합니다. 이 문제에서의 nth-of-type이 그렇습니다. 크롬에서 선택자를 이용하는 것은 크롬팀이 규정한 문법을 따르고, 파이썬에서는 BeautifulSoup팀이 규정한 문법을 따르고 있는데 이 두팀간의 미세한 규칙차이가 존재했던 겁니다. (대부분의 규칙은 같으며 간혹 예외 존재)

          좋아요 0
            고한석
            11월 1일 18:11 · 경희)KHU알라 part1

            질문드립니다!

            1. csv파일을 열때 인코딩을 'UTF-8'로 할 경우 글자가 깨지고 'ANSI'로 할 때 안 깨지는데 이유가 있을까요?

            2. 위 질문과 연관된 에러같은데 네이버TV정보를 가져올 때 저렇게 데이터를 가져오다가 중간에서 오류가 발생합니다! 이유가 무엇인지 궁금합니다

            자세히 보기
            최도근
            11월 2일 11:58

            윈도우 환경에서 csv 파일에 한글 등이 포함된 데이터를 저장할 때 정말 자주 발생하는 문제입니다. 가장 쉬운 방법은 openpyxl로 접근하시는 거고 현우님이 답변주신것처럼 여러 인코딩 옵션을 직접 테스트해보셔야할 것 같습니다.

            방법이 없는 건 아닙니다..! 분명 해결가능한 문제이지만 컴퓨터마다, 다루는 데이터마다 다르기 때문에 그때그때 다른 조치가 필요합니다.

            좋아요 1
            고한석
            11월 1일 22:42

            encoding을 'utf-8'로 해봤는데 컴퓨터에 문제 원인이 있는지 utf-8로 하면 글자가 파일 글자가 다 깨져요.. 오히려 encoding="ANSI"는 읽을 수 있는 상황입니다ㅠ 

            좋아요 0
              고한석
              11월 1일 22:46

              encoding을 UTF-8로 하면 데이터 수집은 되지만 글자가 다 깨지고 ANSI로 설정하면 

              File "C:/Users/고한석/Desktop/KHU알라/Coala_Crawling/Week4/week4_3.py", line 34, in <module> 

               f.write(title+','+chn+','+hit+','+like+'\n') File "C:\Users\고한석\AppData\Local\Programs\Python\Python37\lib\encodings\mbcs.py", line 25, in encode 

               return mbcs_encode(input, self.errors)[0] 

              UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: invalid character

              다음과 같은 에러가 뜨는데 CSV말고 엑셀파일로 저장하는 방법밖에 없는건가요?

              좋아요 0
                댓글 2개 더보기
                Minah Lee
                10월 28일 18:15 · 건국)코덕이 part1

                이렇게 코드를 쓰고 csv 파일을 열었더니 글자라 저렇게 깨집니다. 어떻게 해결할 수 있나요??

                **코드가 잘렸는데 beautifulsoup 깔아 놓은 상태입니다


                자세히 보기
                이헌영
                10월 30일 10:06

                한글로 저장된 데이터의 경우에는 컴퓨터마다 한글을 인식하는 방법(encoding)이 달라서 문제가 발생하곤 합니다.

                파일을 여는 부분에서 인코딩 옵션을 추가해주시거나,

                f=open("파일이름", "w", encoding="UTF-8")

                openpyxl을 활용해서 엑셀로 저장해보세요!!

                좋아요 0
                  전휘목
                  10월 24일 09:37 · 연세)예솔아가자 part1

                  안녕하세요 코알라 선생님 질문드립니다.

                   사진과 같이 유튜브 플레이리스트 제목을 크롤링하려 하는데  

                  컨테이너를 첫번째 사진의 선택자를 선택하고 

                  타이틀을 아래 선택자로 선택했습니다만 결과가 나오지 않습니다.  

                  띄워진 곳을 나누고 . 으로 바꿔보아도 되지 않았습니다.

                   또한 저렇게 보이고 검사창 안에서 문자를 드래그해서 선택하는 거? 

                  그 방법은 클래스를 두 번 클릭한 다음 복사하는 것밖에 없는 것인가요?    

                  자세히 보기
                  최도근
                  10월 26일 10:19

                  1. 우선 선택자가 틀렸습니다.

                  ytd-grid-playlist-renderer.style-scope

                  첫번째 사진의 선택자는 이렇게 구성해야 합니다.

                  * 선택자규칙
                  태그명.클래스명
                  ex) 태그가 a 고 class가 test이므로 a.test
                  <a class="test" >~~~

                  2. 유튜브는 우리가 다뤄온 사이트들과는 다른 동적페이지입니다.
                  선택자를 올바르게 구성해도 파이썬 상에서 데이터가 구해지지 않을 수 있습니다.

                  동적페이지 처리법은 6주차 과정에서 배웁니다.

                  3. 다른 방법도 있지만, 두번 클릭해서 복사하는게 가장 쉬운 방법입니다.

                  좋아요 1
                  전휘목
                  10월 27일 10:11

                  네 답변 주셔서 감사합니다! 따라 해보겠습니다 ㅅㅅ 주말 잘 보내세요

                  좋아요 0
                    이승환

                    여기서 코드에는 문제없다고 하는데 데이터가 안 뜨는 이유는 무엇일까요...? ㅠㅠ

                    이헌영
                    10월 21일 17:05

                    승환님 안녕하세요 :) 
                    답변이 많이 늦었습니다 ㅠㅠ

                    해당하는 부분은 6주차에 다루게될 내용인데요, 웹페이지의 방식을 정적 페이지와 동적페이지로 구분하고 있는데요. 우리가 배운 방법은 정적페이지에서의 데이터 수집 방법이기 때문에 기존 방식으로는 수집이 불가능합니다.

                    6주차에 동적페이지와 정적페이지의 구분방법과 수집 방법을 공부하게 됩니다. 먼저 예습하고 싶으시다면 "selenium"이라는 패키지를 참고해보시면 좋을 것 같아요 :)

                    좋아요 1
                    고경태
                    10월 17일 00:02 · 연세)데마초 part1

                    1. BeautifulSoup 함수에서 파라미터를 두번째 파라미터를 입력할 때 왜 스트링 형태로 입력해야 하나요? 


                    2. 랭킹닭컴에서 제품 이름과 가격을 크롤링해 오고 싶은데 긁어오면 문자가 깨져서 보입니다. 왜 그런 것일까요??  이용한 코드는 아래와 같습니다.

                    import requests as re 

                    from bs4 import BeautifulSoup  

                    raw = re.get("https://www.rankingdak.com/shop/big_section.php?cno1=1655", headers = {"User-Agent":"Mozilla/5.0"}) 

                    html = BeautifulSoup(raw.text, 'html.parser') 

                    chicken = html.select("#big_section > div.prd_wrap > ul > li") 

                    for i in chicken: 

                        name = i.select_one("p.prd_name").text 

                        price = i.select_one("p strong.price").text 

                        print(name, price)

                    자세히 보기
                    이헌영
                    10월 21일 17:09

                    경태님 안녕하세요 :) 답변이 늦었습니다 ㅠㅠ

                    1. 'html.parser'부분은 BeautifulSoup4를 만든 개발자가 정해놓은 규칙이기 때문에 꼭 string형식으로 'html.parser'라고 적어주셔야합니다. 특별히 원리나 이유가 있진 않습니다.

                    2. 문자가 깨지는 부분은 재성님이 이야기해주신대로 

                    raw.encoding = "UTF-8"

                    을 추가해주시면 됩니다 :)

                    좋아요 0
                      홍재성
                      10월 21일 02:53

                      2번문제는 아마 인코딩이 안되서 그런거같아요

                      raw = get(~) 다음 문장에

                      raw.encoding = 'utf-8' 을 적어주면 잘 될거에요!

                      좋아요 0

                        week3 데이터 수집기 만들기 스터디를 진행하다가 이상한 부분이 있어서 질문 드립니다.


                        for i in range(1,4):

                                raw = requests.get("http://search.daum.net/search?w=news&q=코알라&p="+str(i))


                        이 부분에서 인터넷 홈페이지 주소는 큰 따옴표 안에 들어가 있어서 문자로 취급되고,

                         'i'는 숫자이기 때문에 문자로 바꿔주기 위해서 str() 을 앞에 써줬습니다.

                        그런데,


                        for i in range(1,4): 

                                raw = requests.get("http://search.daum.net/search?w=news&q=코알라&p=i")


                        이렇게 변수 ' i'를 그냥 큰 따옴표 안에 넣으면 변수가 아니라 문자로 인식이 되어서 오류가 떠야 할 것 같은데 위에 있는 것과 동일하게 변수로 인식을 합니다.;;;;; 오류 없이 프로그램이 돼요.

                        제 컴퓨터 뿐만아니라 다른 분들도 마찬가지로 아무 문제 없이 잘 실행됐습니다.

                        변수를 i가 아니라, page로 설정해서 홈페이지 주소가 "~~~~page=page" 이렇게 되어도 실행이 됩니다. 왜 그럴까요??

                        자세한 건 사진을 첨부합니다.


                        자세히 보기
                        이헌영
                        10월 21일 17:14

                        희현님 안녕하세요 :) 답변이 좀 늦었습니다 ㅠㅠ

                        먼저 요청값같은 경우는 잘못 입력해도 오류가 나지 않는 방식으로 설계가된 경우가 많습니다. 다만, 문자열 안에 "p=i" 형식으로 넣어주시면 실제로 페이지가 변하지 않고 같은 기사만 반복되게 될거에요. 

                        실제로 해당 url로 들어가보면 p=다음에 숫자가 아닌 다른 문자를 넣으면 1페이지가 반복되게 됩니다.

                        좋아요 0
                          박남규
                          10월 16일 19:01 · 건국)KU알라 part1

                          https://tv.kakao.com/category/entertainment 에서 제목과 채널명을 크롤링하는 과제를 수행했는데, 선택자로 검사했을때는 62개의 항목이 있지만 파이썬으로 다음과 같이 코드를 작성하면 22개의 항목밖에 크롤링이 되지 않습니다. 원인과 해결방법이 궁금합니다.


                          자세히 보기
                          이헌영
                          10월 21일 17:17

                          남규님 안녕하세요 :) 답변이 늦었습니다 ㅠㅠ

                          해당하는 부분은 6주차에 다루게 될텐데요. 웹페이지가 데이터를 가져오는 방식은 동적방법과 정적인 방법 두가지가 있습니다. 우리가 지금까지 다룬 requests와 beautifulsoup을 이용한 방법은 정적 데이터를 수집하는 방법인데요.

                          카카오티비의 경우에는 두가지 방법을 모두 사용하기 때문에 현재방법으로는 모든데이터를 수집하기 어렵습니다.

                          6주차에 "selenium"이라는 패키지를 공부하면 수집할 수 있게 됩니다!!

                          좋아요 1
                          이윤성
                          10월 16일 03:25 · 홍익)일곱코린이 part1

                          안녕하세요~ 질문겸 인사드립니다ㅎㅎ

                          이번 3주차에 Challenge2를 하는 중에 사소한 궁금증이 생겨서 질문 올립니다.

                          container를 "tbody tr.athing"로 잡아보았습니다

                          html에서 '검사'에서 찾기 기능을 이용했을 때는 30개 모두 targeting이 잘 되었는데요.. 

                          Python에서 BeautifulSoup의 select로 list에 담으려고하니 담기지 않는 것을 확인했습니다.

                          특별한 이유가 있는건가요. 아니면 beautifulSoup이용자가  조심하고 피해주어야하는 부분인가요?


                          자세히 보기
                          최도근
                          10월 16일 11:20

                          담기는게 정상입니다.

                          print(len(html.select('body tr.athing')))

                          len 기능을 이용해서 실제로 몇개가 담겼는지 확인해보세요..!

                          해결이 어려우시면 계속 질문주세요!

                          좋아요 0
                            이윤성
                            10월 16일 23:27

                            <body tr.athing>역시 잘되는 것 확인했는데요.

                            제 질문은 <body tr.athing>이 아니라, <body>태그안에  있는 <tbody>를 적어주었을 때가 궁금합니다. 즉,<tbody tr.athing> 으로 하면 크롤링이 되지않습니다.말씀하신 print(len())을 하면 숫자 0이 나옵니다.

                            하지만 html 검사 기능으로보면 30개 다 잡아줍니다. 왜 그런걸까요?

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