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

배키님의 프로필 이미지
배키

작성한 질문수

[2024 개정판] 이것이 진짜 크롤링이다 - 기본편

페이지 출력 오류

작성

·

212

0

페이지마다 뉴스 제목 가져오는데 오류가 있습니다

2페이지 : 1페이지 마지막 뉴스 ~ 2페이지 마지막에서 두번째 뉴스

3페이지 : 2페이지 마지막 뉴스 ~ 3페이지 마지막에서 두번째 뉴스

이런식으로 페이지가 약간 틀립니다.

또, 10페이지는 아예 나오지가 않습니다.

스크린샷 2023-08-09 094831.png

답변 2

1

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

웹브라우저에 보이는 뉴스 순서와

파이썬으로 크롤링한 뉴스 순서는 조금 다를 수 있습니다.

 

10번째 페이지부터 크롤링되지 않는 것은 방금 확인해본 결과

해당 페이지 서버쪽에 크롤링 탐지 정책이 새로 생겼습니다.

 

쉽게 말씀드리면 너무 빨리 크롤링해서 10페이지부터 막아버리는 겁니다.

time.sleep(0.1)~ time.sleep(0.5) 까지 테스트 해본 결과

time.sleep(0.5)초 정도 부여하니 정상적으로 작동 하였습니다.

 

import requests
from bs4 import BeautifulSoup
import pyautogui
import time

keyword = pyautogui.prompt("검색어를 입력하세요")
lastpage = pyautogui.prompt("마지막 페이지번호를 입력하세요")
pageNum = 1
# 10페이지 까지 가져와보자
for i in range(1, int(lastpage)*10, 10):
    print(f"{pageNum}번째 페이지 입니다=================")
    print(i)
    response = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={keyword}&start={i}")
    print(response.url)
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')
    links = soup.select('.news_tit') # 결과는 리스트
    for link in links:
        title = link.text # 태그 안에 있는 모든 글자
        url = link.attrs['href'] # href의 속성값
        print(title, url)
    pageNum = pageNum + 1
    time.sleep(0.5)

 

배키님의 프로필 이미지
배키
질문자

강의 너무 잘보고 있습니다! 감사합니다

0

감사합니다. 10페이지부터 안나왔는데... 이유가 있었네요.

배키님의 프로필 이미지
배키

작성한 질문수

질문하기