인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

아맛나님의 프로필 이미지
아맛나

작성한 질문수

남박사의 파이썬 기초부터 실전 100% 활용

네이버 블로그 검색 결과 크롤링 하기

div태그 질문드립니다.

해결된 질문

작성

·

176

1

 title = li.select("a.api_txt_lines")[0].text
            href = li.select("a.api_txt_lines")[0]["href"]
            summary = li.select("a.total_dsc > div.api_txt_lines")[0].text
            results.append((title, href, summary, ""))

1.올려주신 이 코드에서 title을 얻기위해 select할 때에 a.api_txt_lines이렇게 되있는데 제가 개발자도구를 보니 title을 가지고 있는 a태그의 클래스명은 api_txt_lines total_tit이렇게 되있던데 차이가 있는 건가요?

 2.코드를 보면 summary는 클래스명이 total_dsc인 a태그의 자식태그인  클래스명이 api_txt_lines div태그에 접근하여 정보를 얻었다고 생각했습니다.

근데 여기서 a태그는 <div class="total_group">밑에있는 <div class="total_dsc_wrap> 태그에 속해있던데 이 두 태그는 왜 select할때 넣지 않은 건가요? 

li.select("div.total_group > div.total_dsc_wrap > a >div.api_txt_lines")

이렇게 해야하는 것이 아니라면 위의 a태그도 생략하고 그냥 

li.select("div.api_txt_lines") 이렇게 해도 상관없지 않나요?

답변 1

2

남박사님의 프로필 이미지
남박사
지식공유자

1. 개발자 도구의 Elements 탭에서 보여지는 내용은 최종적으로 브라우저에 보여지는 상태로 소스코드가 모두 렌더링 된 결과입니다. 이 말인 즉슨 자바스크립으로 코딩된 내용이라도 실제 HTML 형태로 변환되어 표기되는 상태이므로 실제 데이터(자바스크립트 포함)와 다를 수 있는 부분이 있습니다. 그래서 개발자 도구의 Elements 탭과 Network 탭의 코드를 비교해봐야 하는 경우가 있습니다.

2. 하위 자식 객체들은 생략 가능합니다. 말씀하신 api_txt_lines 가 다른 객체들과 중복되어 사용되지 않는다고 한다면 중간의 div 들은 생략이 가능합니다만 때때로 말씀하신것처럼 중간 객체를 꼭 거쳐야 하는 경우도 종종 있습니다. 

아맛나님의 프로필 이미지
아맛나

작성한 질문수

질문하기