해결된 질문
작성
·
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 들은 생략이 가능합니다만 때때로 말씀하신것처럼 중간 객체를 꼭 거쳐야 하는 경우도 종종 있습니다.