작성
·
188
0
네이버 쇼핑 크롤링 1 강의를 수강하고 있습니다.
네이버 쇼핑 페이지에서 상품에 대한 태그를 추출함에 있어서 items에 데이터가 전혀 저장되지 않습니다.
코드도 완전히 동일한 것 같은데 어떤 문제가 있는 걸까요?
from bs4 import BeautifulSoup
import requests
keyword = input("검색할 제품을 입력하세요 : ")
url = f"https://search.shopping.naver.com/search/all?query={keyword}"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
headers = {"User-Agent" : user_agent}
req = requests.get(url, headers=headers)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
items = soup.select(".adProduct_item__1zC9h")
print(items)
print(len(items))
다음과 같이 []와 0만 출력되는 상황입니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. solim5351님의 질문에 대한 답변으로, 유사하게 네이버 쇼핑 크롤링에 관해 질문하신 다른 수강생의 질문과 그에 대한 답변을 참조로 드리겠습니다.
해당 문제의 원인은 네이버 쇼핑 페이지의 구조가 변경되었거나, 웹페이지에서 동적으로 콘텐츠가 로드되기 때문에 발생한 것일 수 있습니다. 질문하신 코드에서 .adProduct_item__1zC9h
라는 클래스 선택자를 사용하신 부분에서 문제가 발생하는 것으로 보입니다. 이 클래스 선택자는 현재 네이버 쇼핑 페이지의 구조와 일치하지 않거나, 동적으로 콘텐츠가 로드되는 과정에서 변경될 수 있습니다.
비슷한 문제를 겪고 계셨던 다른 수강생의 질문에 대한 답변을 참고해보시면 도움이 될 것 같습니다. 바로 웹 페이지에서 어떤 정보를 추출할 때 해당 정보가 JavaScript로 동적으로 로드되는 경우, requests
와 BeautifulSoup
만 사용하여는 이러한 동적 콘텐츠를 직접적으로 가져올 수 없다는 점입니다. 이러한 경우에는 Selenium
과 같은 도구를 사용하여 실제 브라우저의 동작을 에뮬레이션 함으로써, 동적으로 로드되는 콘텐츠를 포함하여 전체 페이지 콘텐츠를 가져올 수 있습니다.
관련하여 도움될만한 답변 링크는 다음과 같습니다:
- 네이버 쇼핑 크롤링 문의 - 이 답변에서는 네이버 쇼핑에서 상품 정보를 추출하려 할 때 requests
로는 동적 콘텐츠를 가져오기 어려운 점을 설명하고, 대신 Selenium
을 사용할 것을 권장합니다.
질문자님께서 제시하신 코드와 유사한 문제를 겪고 계셨던 다른 수강생의 경우와 비슷하게, requests
와 BeautifulSoup
을 사용하여 정적인 페이지의 데이터 추출은 가능하지만, JavaScript로 동적으로 생성되는 내용에 대해서는 Selenium
같은 웹 드라이버를 통해 실제 웹 브라우저가 페이지를 로드하는 방식을 모방해야 할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
네 그러면 결론적으로 requests를 이용한 크롤링보다는 셀레니움을 사용하여 데이터 추출을 진행해야 한다는 말씀이시죠?
셀레니움으로 크롤링을 진행해봐야겠습니다. 답변 감사합니다!