• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    해결됨

네이버 쇼핑 크롤링 문의

23.10.10 13:20 작성 조회수 336

1

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/117.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(".product_item__MDtDF")

print(items)
print(len(items))

네이버 쇼핑 크롤링 중 문의사항이 있어 글 남깁니다

위의 코드 처럼 네이버 쇼핑에서 검색 시 상품 정보 중 product_item__MDtDF를 받아와서 리스트를 만드려고 하는데 크롬 개발자도구에서는 11개로 검색되지만 위의 코드를 실행하여 '모니터'를 검색해보면 len가 1밖에 나오지 않습니다.

product_item__MDtDF를 제외하고는 강의 내용과 동일한거 같은데 어디에 문제가 있는 걸까요..?

답변 1

답변을 작성해보세요.

1

개발자도구에서 보이는 소스코드는 지금 현재 화면의 소스코드입니다. 화면을 스크롤해서 제품 갯수가 늘어나면 product_item__MDtDF의 갯수도 늘어납니다.
하지만 화면에서 마우스 오른쪽 버튼을 눌러 페이지 소스 보기를 하시면 product_item__MDtDF는 한개만 나옵니다. 페이지 소스 보기는 처음에 로드 된 페이지 소스 그 자체인거죠.
requests.get으로 접속해서 가져온 html은 현재 화면의 소스코드가 아니라 바로 페이지 소스 보기에서 볼 수 있는 html인것입니다.
여러개의 product_item__MDtDF를 받아오려면 requests가 아닌 selenium을 사용해야 합니다.