len(ul_element) 관련 질문_추가
221
작성한 질문수 8
교수님
안녕하십니까? 아래 질문에 대해 말씀주신 부분을 다음과 같이 첨부드립니다.
type(ul_element)
bs4.element .Tag
print(ul_element)
<ul class="kwd_lst _recent"> <li class="item _item" data-keyword="@in_txt@" data-rank="@rank@" data-template-type="history"> <a class="kwd" href="#"> <span class="fix"><span class="common_ico_kwd"><i class="imsc ico_search"></i></span><span>@txt@</span></span> </a> <span class="etc"> <em class="date">@date@.</em> <a aria-pressed="false" class="bt_item _del" href="#" role="button"><i class="imsc ico_del">삭제</i></a> </span> </li> </ul>
지금 다시 보니까 ul_element도 ul_elements 내의 또 다른 리스트가 아니었나 싶습니다. 즉 13개의 원소로 이루어진 ul_elements의 첫 번째 요소인 ul_element도 3개의 요소로 구성 된 리스트 형태인 건 아닌지요? 그런데 type가 Tag인데 리스트가 될 수 있는지요?
감사합니다
--------------------------------------------------------------------------------------------
원 질문
안녕하세요!
제가 보기에도 좀 이상하네요.
혹시 type(ul_element), print(ul_element) 두 명령어 결과 첨부 가능하실까요?
답변 1
1
안녕하세요.
우선 한가지 먼저 말씀드리면, len()는 list type의 객체에만 호출이 되는 함수는 아닙니다.
가령 string 클래스 객체에도 쓸수가 있죠.
왜냐하면 len()함수는 내부적으로 해당 객체의 __len__ 함수를 호출하게 설계되어있습니다.
따라서 어떤 클래스이든 __len__() 함수를 구현했다면, 해당 함수가 반환하는 값을 출력하도록 되어있습니다.
bs4의 github에서 Tag 클래스를 자세히들여다보시면, 마찬가지로 __len__()이 구현되어있음을 확인하실 수 있습니다: https://github.com/newvem/beautifulsoup/blob/03b1b76ff969651b1ec4071c0b2e749590461f7d/bs4/element.py#L574
여기서 len(self.contents)를 return하는데 여기서 self.contents는 Tag라는 클래스가 상속받은 PageElement라는 부모클래스에서 정의되는 녀석입니다(리스트 타입).
이 self.contents는 Tag라는 object내에서 해당 element의 자식 element를 넣어두는 리스트라고 보시면 되겠습니다 (https://github.com/newvem/beautifulsoup/blob/03b1b76ff969651b1ec4071c0b2e749590461f7d/bs4/element.py#L106 참고)
라이브러리 코드를 뜯어보고 관찰하시는것이 처음이면 좀 어려우실수도 있는데, 제 답변을 통해 '코드 분석은 이런 방식과 흐름으로 진행하는구나'라는 느낌만 우선 가져가시고, 차근차근 연습하시면, 이후에 비슷한 문제에 부딪혔을 때 큰 도움이 되시리라 생각합니다.
좋은질문 감사드립니다.
15.1 네이버 부동산 사이트 개발자도구 실행시 현상 문의
0
898
1
requirments 설치 시 오류
0
97
1
6.1 미국주식 데이터 크롤링이 막혔네요.
0
227
2
태그를 못찾는 오류 질문드립니다.
0
144
2
6.1 미국 주식 데이터 크롤링을 막아둔 거 같아요.
0
284
2
requirements.txt 다운로드가 안끝나요
0
149
2
주신 파일로 다운로드를 하던 중에 끝에 이런 오류가 뜨는데 어떡해야하나요?
0
151
1
혹시 애플 M시리즈 사용하시는 분 중에 오류
0
152
0
전일비 상승,하락때문에 int화를 못하고 있는데
0
127
1
일별 시세 데이터 상승/하락 \t\n해결법
0
159
1
pd.concat(df, ignore_index=True) InvalidIndexError 해결 방법 문의
0
471
2
pip install -r requirements.txt 문제
0
368
3
부동산 KB 시세 크롤링 문의
0
828
1
7.1 주식 일별 시세 데이터(Yahoo finance)
1
380
1
네이버 부동산 매물 크롤링 오류
0
645
1
네이버 부동산 크롤링 문의드립니다.
0
1059
1
버전 관련 질문
0
353
1
5.2강 주식 일별 시세 데이터 관련 질문이 있습니다
0
281
1
7.1 야후 파이낸스 크롤링 request 오류
0
741
1
anaconda
0
358
1
야후파이낸스 크롤링 오류
0
824
1
셀레니움 변경점
2
791
1
request.get() 하면 SSLCertVerificationError 에러가 납니다.
0
520
1
이론 수업 자료 공유 해주실 수 있나요?
0
362
0





