커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
스스로 해결
태크나 클래스 탐색에 대하여
웹개발이 처음이어도 쉽게 배우는 GPT 웹개발
챕터 3
북마크
김*호
댓글
1
추천
0
조회수
41
조회수
41
스스로 해결

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


강의내용대로 온도 태그를 잡을수 있었지만, 나머지 cloud, humid, wind 값에 대한 해당 페이지의 태크나 클래스를 찾지 못하겠습니다.

url을 강의에 소개된 네이버 날씨 페이지로 지정해서 찾고 있는데,

위의 세 값에 대한 태그, 클래스명은 전혀 달라 보입니다.

교재 스니펫 soup 코드대로 터미날 실행하면 해당 기록은 정확히 추출되는게 보이는데...

개발자도구에서 해당 태크나 클래스가 어디에 있는지요?


# 현재 페이지를 개발자도구에서 추출해봅니다. cloud는 아래와 같이 추출되는데..
cloud= soup.select_one('div.temperature_info > p.summary > span.before_slash').contents[0]

humid= soup.select_one('dl.summary_list')
# 현재 페이지 url에 대해 터미널 print된 humid 크롤해보면 체감온도와 습도, 바람 태그까지 동일합니다. 이런 경우 구별자를 어떻게 찾아야 하는지요?

<dl class="summary_list"> <div class="sort"> <dt class="term">체감</dt> <dd class="desc">26.1°</dd> </div> <div class="sort"> <dt class="term">습도</dt> <dd class="desc">74%</dd> </div> <div class="sort"> <dt class="term">서풍</dt> <dd class="desc">2m/s</dd> </div> </dl>


질문해결 버튼이 사라졌네요.


방금 개발자도구 AI 답변을 읽어보니.. cloud, humid, wind 항목은 클래스나 태그명으로 동일하고,

서로의 위지 식별자로서 nth-child() 넘버링으로 추출한다고 합니다.

교재의 2, 3번 차일드와 같이 체감온도는 1번 차일드로.. 위치식별자인듯 합니다.


temp_sense = soup.select_one('.summary_list > div:nth-child(1) > dd').text

humid = soup.select_one('.summary_list > div:nth-child(2) > dd').text

wind = soup.select_one('.summary_list > div:nth-child(3) > dd').text


AI answers: I've checked the class names of the div.sort elements within the dl.summary_list. The result is:


Code


["sort", "sort", "sort"]

Use code snippets with caution

It appears that all three div.sort elements only have the class sort. This means they do not have unique class names that you can use to distinguish them directly.

Therefore, the most reliable way to address each of them for scraping will likely be:

  • Using nth-child(): Targeting them based on their position, as I mentioned before (e.g., dl.summary_list div.sort:nth-child(1)).
  • Iterating through the elements: Selecting all div.sort elements and processing them one by one in your scraping code.









작성한 코드 및 에러 메세지

import requests

from bs4 import BeautifulSoup


URL = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%82%A0%EC%94%A8"

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

data = requests.get(URL, headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

temp = soup.select_one('.temperature_text > strong' ).contents[1]


cloud = soup.select_one('.weather').text

humid = soup.select_one('.summary_list > div:nth-child(2) > dd').text

wind = soup.select_one('.summary_list > div:nth-child(3) > dd').text

print(temp, cloud, humid, wind)

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴