작성
·
1.2K
0
안녕하세요, BeautifulSoup 이용해서
네이버 스마트스토어 크롤링 하고있는데요
스마트스토어에서 페이지 바뀐걸 어떻게 적용해야 할지 모르겠어요...
원래는 그냥 URL 입력해서 했는데요, 2,3,4,,,페이지의 URL을 넣으면 자동으로 1페이지만 나옵니다.
아래의 URL도 분명 page=2라고 되어있는데 클릭하면 page=1으로 열릴것입니다.
그래서 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)
부분을 수정하면 됩니다.
이렇게 하면 페이지가 변하는 문제를 해결하고 여러 페이지의 데이터를 크롤링할 수 있을 거예요. 문제가 있으면 언제든지 물어보세요. 좋은 결과 있기를 바라요!