강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ehrhdwn님의 프로필 이미지
ehrhdwn

작성한 질문수

네이버 스마트스토어 크롤링시 페이지 변하는거 문의요ㅠㅠ

작성

·

1.2K

0

안녕하세요, BeautifulSoup 이용해서

네이버 스마트스토어 크롤링 하고있는데요

스마트스토어에서 페이지 바뀐걸 어떻게 적용해야 할지 모르겠어요...

원래는 그냥 URL 입력해서 했는데요, 2,3,4,,,페이지의 URL을 넣으면 자동으로 1페이지만 나옵니다.

아래의 URL도 분명 page=2라고 되어있는데 클릭하면 page=1으로 열릴것입니다.

https://brand.naver.com/chansol/category/9aee63ea6c3e46aebd6c266a47897b5b?st=POPULAR&dt=LIST&page=2&size=40

그래서 2페이지이 이상의 자료들을 크롤링 할 수가 없습니다.

대체 어떻게 해야하나요...

3일째 이 해결만 찾아봤는데 통 없네요...

자동으로 페이지 넘기는 코드만 있고 ㅠㅠ

뭐라도 좀 알려주시면 감사하겠습니다.

import requests
import re
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import xlsxwriter 
 
savePath = "/Applications/Python 3.11/py practice/" 
workbook = xlsxwriter.Workbook('네이버스토어.xlsx') 

worksheet = workbook.add_worksheet()
 
url = "https://brand.naver.com/chansol/category/9aee63ea6c3e46aebd6c266a47897b5b?st=POPULAR&dt=LIST&page=1&size=40"

headers = { 'User-Agent': UserAgent().chrome }
res = requests.get(url, headers=headers)
res.raise_for_status()
soup = BeautifulSoup(res.content,'html.parser')

excel_row = 1
 
worksheet.set_column('A:A', 58) 
worksheet.set_row(0,18) 
worksheet.set_column('B:B', 12) 

worksheet.write(0, 0, '제품명')
worksheet.write(0, 1, '가격')

items = soup.select('#CategoryProducts > ul > li')
 
shopItemList = [] 
for item in items:
    name = item.select_one('#CategoryProducts > ul > li > a > div > div > strong').text 
    price = item.select_one('#CategoryProducts > ul > li > a > div > div > div > strong._30FIlIXokR > span').text 
    
    worksheet.write(excel_row, 0, name)
    worksheet.write(excel_row, 1, price)
    
    excel_row += 1
 
workbook.close() 
 
 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요. 네이버 스마트스토어를 크롤링하면서 페이지가 변하는 문제에 대해서 어떻게 해결해야 하는지 알려드릴게요.

네이버 스마트스토어에서 페이지를 넘길 때는 일반적으로 URL에 페이지 번호를 포함하는 방식을 사용합니다. 예를 들어, page=1이 첫 번째 페이지를 의미하고 page=2가 두 번째 페이지를 의미하는 식으로 말이죠.

여러 페이지를 크롤링하기 위해서는 URL에서 페이지 번호를 변경하는 방법을 사용하면 됩니다. 예를 들어, 첫 번째 페이지의 URL을 기준으로 페이지 번호를 변경해가면서 크롤링을 진행하면 됩니다.

이를 위해서는 반복문을 사용해서 여러 페이지를 순차적으로 크롤링할 수 있도록 코드를 수정해야 합니다. 아래의 코드를 참고해서 전체 페이지를 크롤링해보세요.

import requests
from bs4 import BeautifulSoup
import xlsxwriter

savePath = "/Applications/Python 3.11/py practice/" 
workbook = xlsxwriter.Workbook('네이버스토어.xlsx')
worksheet = workbook.add_worksheet()

headers = { 'User-Agent': 'Mozilla/5.0' }  # User-Agent 수정

# 10 페이지까지 크롤링 예시
for page in range(1, 11):
    url = f"https://brand.naver.com/chansol/category/9aee63ea6c3e46aebd6c266a47897b5b?st=POPULAR&dt=LIST&page={page}&size=40"

    res = requests.get(url, headers=headers)
    res.raise_for_status()
    soup = BeautifulSoup(res.text, 'html.parser')
    
    # 크롤링 코드 작성
    # 원하는 데이터를 추출하는 로직을 구현하세요.
    # 예시로 제목만 추출하는 코드를 작성했습니다.
    titles = soup.select('.item_title')
    for title in titles:
        print(title.get_text())
    
workbook.close()

위 코드를 참고하여, 원하는 데이터를 추출하는 로직을 구현해 보세요. 주의할 점은 각 페이지를 크롤링할 때마다 원하는 데이터를 추출해야 한다는 점입니다. 추출한 데이터를 원하는 형식으로 가공해서 사용하면 됩니다.

추가적으로, 페이지의 범위를 조정하고 싶다면 for page in range(1, 11): 부분의 range(1, 11) 부분을 수정하면 됩니다.

이렇게 하면 페이지가 변하는 문제를 해결하고 여러 페이지의 데이터를 크롤링할 수 있을 거예요. 문제가 있으면 언제든지 물어보세요. 좋은 결과 있기를 바라요!

ehrhdwn님의 프로필 이미지
ehrhdwn

작성한 질문수

질문하기