파이썬 뷰리풀숲 bs4로 네이버 뉴스를 크롤링하려는 사람들이 있을 것이다.

    필자도 주식 단기매매를 위해서 네이버 뉴스 크롤링해서 관심 키워드가 포함된 기사만 뽑아서 알려주도록 하는 코드를 짜서 사용하고 있다.

     

    처음 네이버 뉴스를 크롤링하는 코드를 잘 짰다고 생각하고 돌렸는데 시작하자마자 에러가 뜨는 것이다.

     

    네이버 뉴스 크롤링 에러
    requests.exceptions.ConnectionError: 
    ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

    처음엔 무슨 말인지 몰라서 코드를 다시 살펴보고 이것저것 조치를 해봤지만 안되서 구글링을 시도했다.

    바로 정답을 찾지 못했지만 조금 더 찾아보니 해결 방법을 발견하게 되었다.

     

     

    header 추가

    네이버는 어떤 브라우저로 접속했는지 확인을 하고 만약 정보가 없다면 응답을 해주지 않고 거부해버린다.

    그래서 bs4에서 그냥 requests.get을 보낼 것이 아니라 브라우저 정보를 입력해줘야 한다.

    브라우저 정보를 입력한다고 해서 어려운 게 아니다.

    아주 간단하다.

     

    from bs4 import BeautifulSoup
    import requests
    
    # 네이버 전체 뉴스 url
    BASE_URL = "https://news.naver.com/main/list.naver?mode=LSD&mid=sec&listType=title&sid1=001"
    
    # get할 때 headers 인자를 이렇게 넣어주면 된다.
    requests.get(BASE_URL, headers={'User-Agent':'Mozilla/5.0'})

    headers에 운영체제, 브라우저 정보 등 다양한 정보를 넣어줄 수 있지만 그럴 필요는 없고 그냥 브라우저 정보 정도만 저렇게 넣어주면 된다.

     

    이렇게 하면 에러 없이 크롤링 할 수 있을 것이다.

     

    ※ 함께 보면 좋은 글

     

    셀레니움 네이버 로그인 캡챠 피하기 클릭!

    유튜브 재생목록 총 재생시간 구하는 코드 클릭!

    셀레니움 네이버 검색광고 API 활용 잔액확인 하는 법 클릭!

    셀레니움 최신버전 iframe 문법 클릭!

    크롬 굵은 폰트 번짐 해결하는 방법 클릭!