
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
강의내용대로 온도 태그를 잡을수 있었지만, 나머지 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:
["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:

작성한 코드 및 에러 메세지
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) 단축키로 코드를 한 번에 선택할 수 있어요!
