네이버쇼핑 크롤링 예제 관련
429
작성한 질문수 3
네이버 쇼핑 크롤링예제 부분에서 그냥 requests로 한번 접속해보고 그 다음에 셀레니움으로 접속해봤는데 둘다 접속 제한 페이지만 나옵니다.ㅜㅜ. 여러번 시도 한것도 아닌데 지금 시점 네이버쇼핑이 원래 빡시게 막아 놓은건가가요? 방법이 없나요?
답변 2
0
얼마전에 업데이트가 있었어요 😂
최근 네이버 쇼핑이 셀레니움쪽의 자동화를 완전히 막아놓은 상태입니다.
일반 브라우저에서도 URL로 접근시 봇방지 문자가 뜨네요..
1
네이버는 막혀서
다음으로 실습해봤습니다.
다음은 딱히 안막는 같은데
네이버와 달리 일반상품과 광고상품으로 구분은 없어서
마지막 페이지까지 크롤링해봤습니다.
(13페이지까지 있는 품목으로)
결과는 나오는거 같은데 혹시 잘못된 부분이나 부족한 부분있으면 답장 부탁드립니다^^;;
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
from bs4 import BeautifulSoup
# 크롬 드라이버 생성
driver = webdriver.Chrome()
for page in range(1, 20):
url = f"https://shoppinghow.kakao.com/search/%ED%97%88%EB%8B%AD%20FIT%20%EC%A0%80%EC%97%BC/page:{page}&view_type:list&image_filter_cnt:77"
driver.get(url)
# 스크롤전 높이 측정
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# 대기 시간이 없으면 1번만 스크롤한다. 중요!!!!!!
time.sleep(1)
# 스크롤 후 높이
after_height = driver.execute_script("return document.body.scrollHeight")
# 비교
if last_height == after_height:
print(after_height)
break
# 스크롤 전 높이 업데이트
last_height = after_height
html = driver.page_source
soup = BeautifulSoup(html,'html.parser')
items = soup.select(".wrap_prod_top")
i = 1
for item in items:
name = item.select_one(".wrap_cont > strong > a").text
link = "https://shoppinghow.kakao.com/" + item.select_one(".wrap_cont > strong > a").attrs['href']
price = item.select_one("span.num_price.lowest").text.replace("최저가","")
print(page,i,name,price,link)
i += 1
# 맨뒤 버튼 확인
last_page_btn = soup.select_one("#searchContent > div.cont_result > div.wrap_prod_list > div > span > a.ico_comm3.btn_next")
if last_page_btn is None:
break
print(page,i,name,price,link)
0
수집되는거 테스트하고 코드확인해봤습니다.
for i in range(1, 10000):
이런식으로 완전 큰 숫자 넣어주면 좋을 듯해요
나머지는 아주 깔끔한데요?? ㅎㅎ
바로 다른 사이트로가서 응용하는 모습 너무 보기 좋습니다 👏🏻👏🏻👏🏻
0
안녕하세요, 인프런 AI 인턴입니다.
김정호님께서 네이버 쇼핑 크롤링을 시도하는 중에 접속 제한 페이지가 나타나는 상황을 겪고 계신 것 같네요. 네이버와 같은 대형 웹사이트는 비정상적인 접속을 방지하기 위해 다양한 크롤링 방지 기술, 혹은 봇 탐지 시스템을 적용합니다. 이러한 조치는 사이트의 로딩 속도를 유지하고 부하를 줄이기 위해 필수적이죠.
현재 네이버 쇼핑에서 크롤링을 하기 위한 몇 가지 팁을 드리자면:
느린 요청: 크롤링 시 지나치게 빠른 요청은 자동화 도구로 감지될 수 있습니다. 따라서
time.sleep()등을 사용하여 요청 간 간격을 조정해 주세요.유저 에이전트(User-Agent) 설정: HTTP 요청 시 브라우저에서 보내는 것과 유사한
User-Agent헤더를 포함시켜 보세요. 이를 통해 브라우저에서 요청하는 것처럼 보이게 할 수 있습니다.IP 변경: 동일한 IP에서 많은 요청이 감지되면 차단될 수 있습니다. 이런 경우 VPN이나 프록시를 사용해 IP를 변경해 보는 것도 방법입니다.
헤드리스 브라우저: 셀레니움을 사용할 때, 헤드리스 모드를 사용하여 브라우저가 실제로 열리지 않고도 크롤링할 수 있습니다. 다만 이 또한 탐지될 가능성이 있으니 주의가 필요합니다.
셀레니움 외 다른 라이브러리 사용: 경우에 따라
BeautifulSoup과 같은 라이브러리를 병행하여 사용할 수 있는데, 네이버 쇼핑의 경우 Javascript로 렌더링되므로 셀레니움이나 다른 헤드리스 브라우저가 더 적합할 수 있습니다.
참고로, 유사한 질문이 게시판에 다수 있습니다:
- 네이버 쇼핑 크롤링에서 셀레니움 접속이 안되네요 - 크롤링 중 네이버 쇼핑에 접근할 때 발생하는 문제와 해결법에 대한 설명이 있습니다.
- headers를 추가했지만 크롤링이 감지 되어 연결이 제한 되었습니다. 이를 방지하기 위한 다른 방법이 있을까요? - 크롤링 차단 관련 문제에 대한 사용자 경험을 공유한 사례입니다.
저는 김정호님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
셀레니움 환경설정 오류
0
52
2
네이버 로그인 관련
0
281
2
안녕하세요 셀레니움에 대해서 질문
0
88
1
크롤링 연습사이트 문의
0
102
2
선택자 질문
0
74
2
'특정 요소가 나타날 때까지 스크롤' 부분 에러
0
78
2
자동 로그인 질문
0
90
2
44강 제목, 링크
0
107
1
원하는 값이 없을 때
0
91
2
크롤링한 링크가 엑셀로 들어가면 작동이 안되요
0
230
2
셀레니움 PDF자료는 받을 수 있나요
0
100
2
글목록 추출하기
0
100
2
메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문
0
91
2
강의 노트가 어디에 있는건가요?
0
80
2
강의 커리큘럼 질문
0
102
1
조건문 else 사용하지 않는 이유
0
77
2
셀레니움으로 접근할 수 없는 경우
0
97
2
웹페이지 변경
0
75
2
자바스크립트로 태그 선택 시 질문입니다.
1
65
2
수료증은 어떻게 받나요?
0
122
2
class명을 활용하여 선택자를 만들지 않는 경우..?
0
61
2
드라이버가 안 열려요
0
79
2
이거 해결방법 아시는 분?
0
121
2
네이버 지식인 크롤링..
0
202
2





