inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1272

ehrhdwn

작성한 질문수 2

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 인턴

안녕하세요, 인프런 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) 부분을 수정하면 됩니다.

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

맥유저 입장의 고려해주세요

2

81

1

케이테스트 서버 운영 방법

2

52

1

수업 잘 들었습니다.

2

25

2

실행과정 질문입니다.

2

25

1