[python] beautifulsoup을 이용해 네이버 뉴스 전체를 크롤링을 해보자!  

(네이버 뉴스 크롤링 2)

 

*본 포스팅은 개인 학습용으로 만든 크롤러라 완벽한 코드가 아닌 점 알려드립니다.

 

오늘은 네이버 신문기사 전문 크롤링 하는 방법에 대해 

포스팅을 하도록 하겠습니다!

 

중복설명은 최대한 안 할 겁니다.

혹시 전 포스팅을 안 보셨다면 참고 하세요~

 

2019/02/07 - [공부/Python] - [python] beautifulsoup을 이용해 네이버 뉴스 리스트 크롤링을 해보자!

 


naver 신문 기사 전체 크롤링 / 파이썬 크롤링 / 네이버 기사 전체 크롤링 / beautifulsoup 크롤링

01. 들어가기 전..

 

포스팅 전에 아셔야 할 것 설명해드리겠습니다.

 

우선 사실 이번 포스팅 안하려고 했습니다.

제가 글로서 쉽게 설명할 자신이 없고

코드가 테스트 할 때 문제점이 좀 있는데 원인을 알 수 없어서 계속 미루고 있었는데,

필요하신 분들도 있으시고 왜 안되는지 원인도 이제 알게 되어서,

오늘 날  잡아서 포스팅합니닷!

 

우선 저는 처음 크롤링 코드 만들때 (저번 네이버 뉴스 리스트만 크롤링하는 코드) 

네이버 기사의 전문을 긁어오는 것은 불가능 하다고 생각했습니다.

 

왜냐면

네이버 검색창에 검색어를 입력하고 관련 기사들을 눌러보시면 아시겠지만

각기 다른 신문사 사이트로 들어가서 기사를 볼 수 있죠.

 

예를 들어 조선일보 , 데일리팜 , 한겨례 등등 그들은 완전 별개의 신문사들이고 홈페이지 html구조도 다 다릅니다.

이 말인 즉슨 각 신문사 마다 html tag의 id값이나 class값이 달라서 

크롤러를 만들려면 신문사 마다 크롤러를 변경해줘야 한다는 것이죠.

신문사 갯수만 몇백개가 넘는데, 이건 거의 불가능하다고 생각했습니다.

 

헌데, 방법이 있더군요.

'네이버 뉴스 홈'이라는 플랫폼안에서 동일한 html 구조를 가진 기사들을 크롤링 하는 것입니다.

(엥 이게 도대체 뭔 소리야? )

 

네이버 검색창에 검색어를 입력하시면 아래와 같이 기사 리스트 들이 뜹니다.

네이버뉴스에 등록된 기사(2번쨰) 와 그렇지 않은 기사(1번째)

 2번째 기사를 보시면 '8분 전' 뒤에 노란색 하이라이트로 '네이버뉴스'라고 쓰여진 것을 알 수 있죠.

반면 1번째 기사는 그런것이 없습니다.

 

2번째 기사의 '네이버 뉴스'를 눌러보면

네이버 뉴스 홈에 등록된 2번째 기사

 '네이버 뉴스 홈'에서 2번째 기사의 신문사인 뉴시스의 기사를 똑같이 보여주고 있는 것을 알 수 있습니다.

 

정리 하자면 이거입니다.

 

  • 문제점 : 각기 다른 신문사 마다 다른 html 구조와 tag id값을 가지고 있어 크롤링 할 수 없다.
  • 해결방안 : 동일한 html 구조를 가진 뉴스 플랫폼(=동일한 html구조로 뉴스를 모아놓는 곳)에서 신문기사를 크롤링 하자!

그 동일한 html 구조를 가진 뉴스 플랫폼이 바로 '네이버 뉴스 홈'인 거죠!

 

와우! 그럼 우리는 이제 저 '네이버뉴스' url을 타고 들어가서

beautiful soup로 네이버뉴스 기사 전문을 크롤링해오면 되는 겁니다!

 

 

하지만, 문제점이 몇가지 있습니다!

 

첫째,

'네이버 뉴스 홈'에 등록된 기사가 생각보다 많지 않다! ( = 크롤링 결과가 적을 것이다.)

 

원래라면,

1페이지에 10개의 기사들이 있다고 치면

내가 10페이지를 크롤링하면 100개의 기사를 크롤링 해오겠죠?

 

하지만, 우리는 네이버 뉴스 홈에 등록된 기사만을 크롤링 해 올 수 밖에 없기때문에

한페이지에 네이버 기사가 몇개냐에 따라 

크롤링해오는 기사 갯수가 천차만별이 되는 겁니다.

(참고로 한페이지당 보통 0~3개 꼴인 것 같습니다.)

그니깐 10페이지 한다고 100개의 기사가 크롤링되는게 아니란 소리,

10개일 수도있고 20개일 수 도 있고 40개 일 수도 있고...

 

둘째,

연예 , 스포츠 ,날씨 뉴스는 크롤링 안됨

이건  문제점이라고 할 순 없지만 저도 처음에 몰라서 당황 했기에 설명하겠습니다.

연예뉴스 , 스포츠 뉴스, 날씨 뉴스는 아예 다른 네이버 뉴스홈에서 제공되고 있어서 이에 관련된 크롤러는 따로 만드셔야합니다.

(예를 들어 연예인 이름인 강다니엘을 크롤러에 키워드로 입력하시면 크롤링을 해올 수 없습니다.)

 

그 외 크롤링 가능한 주제들은 아래와 같습니다.

크롤링 가능한 주제들

beautifulsoup 네이버 뉴스, git 네이버 뉴스 크롤링, naver news 크롤링, 

naver 크롤링, python crawling, 네이버 뉴스 전체 크롤링, 네이버 뉴스 크롤링, 

 

02. 크롤러 설명

<크롤링 할 것>

  • 기사 제목
  • 신문사  
  • 표준화된 날짜 (2019.01.01) 
  • 내용 전문
  • 해당 기사 하이퍼링크

<프로그램 돌아가는 방식>

  1. 사용자 입력(페이지 수, 검색어, 검색 방식, 시작 날짜, 끝 날짜)  def main
  2. 사용자 입력값 받아와서 def crawler 작동
  3. 만약에 하이퍼링크가 "https://news.naver.com"으로 시작하면  def get_news함수 작동하여 크롤링 할 것들 크롤링한다.
  4. 웹크롤링 결과 저장 ( 리스트 -> 메모장으로 저장 -> 메모장을 csv로 불러와서 -> 최종 엑셀로 저장)

** 참고로 저는 spyder 에디터를 사용했습니다!

 

 

 

 

 

 

 

03. 코드 설명

 

3-0.  import할 라이브러리와 변수

import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime

RESULT_PATH = 'D:/python study/beautifulSoup_ws/crawling_result/'
now = datetime.now() #파일이름 현 시간으로 저장하기

requests, bs4  >> 크롤링을 위한 라이브러리

pandas >> csv파일을 불러오기 위한 라이브러리

datetime >> 최종 저장파일 이름을 현시각으로 저장하기 위한 라이브러리

RESULT_PATH >> 크롤링 결과를 저장할 폴더 경로 ! 꼭 확인해서 변경해줄것 !!

 

3-1. main 함수

def main():
    maxpage = input("최대 출력할 페이지수 입력하시오: ") 
    query = input("검색어 입력: ")
    s_date = input("시작날짜 입력(2019.01.01):")  #2019.01.01
    e_date = input("끝날짜 입력(2019.04.28):")   #2019.04.28
    crawler(maxpage,query,s_date,e_date) #검색된 네이버뉴스의 기사내용을 크롤링합니다. 
    
    excel_make() #엑셀로 만들기 
main()

사용자로부터 입력 값을 받아와 crawler함수로 넘겨주고

엑셀로 만들라는 지시를 한다.

 

 

 

3-2. crawler 함수

네이버 뉴스 홈에 등록된 기사인지 확인하고

- 맞으면 해당 url을 get_news에 보내고 리턴값(리스트 형식)을 메모장으로 저장하는 함수

def crawler(maxpage,query,s_date,e_date):

    s_from = s_date.replace(".","")
    e_to = e_date.replace(".","")
    page = 1
    maxpage_t =(int(maxpage)-1)*10+1   # 11= 2페이지 21=3페이지 31=4페이지  ...81=9페이지 , 91=10페이지, 101=11페이지
    f = open("D:/python study/beautifulSoup_ws/crawling_result/contents_text.txt", 'w', encoding='utf-8')
    
    while page < maxpage_t:
    
        print(page)
    
        url = "https://search.naver.com/search.naver?where=news&query=" + query + "&sort=0&ds=" + s_date + "&de=" + e_date + "&nso=so%3Ar%2Cp%3Afrom" + s_from + "to" + e_to + "%2Ca%3A&start=" + str(page)
        
        req = requests.get(url)
        print(url)
        cont = req.content
        soup = BeautifulSoup(cont, 'html.parser')
            #print(soup)
    
        for urls in soup.select("._sp_each_url"):
            try :
                #print(urls["href"])
                if urls["href"].startswith("https://news.naver.com"):
                    #print(urls["href"])
                    news_detail = get_news(urls["href"])
                        # pdate, pcompany, title, btext
                    f.write("{}\t{}\t{}\t{}\t{}\n".format(news_detail[1], news_detail[4], news_detail[0], news_detail[2],news_detail[3]))  # new style
            except Exception as e:
                print(e)
                continue
        page += 10
    
    
    f.close()

사용자 입력값을 받아와 url을 만든다.

여기서 url변수는 네이버에 키워드를 검색했을 때 기사 리스트들의 페이지들의

규칙에 맞게 만든 변수이다. (전 포스팅 참고)

 

for urls in soup.select("._sp_each_url"):
            try :
                if urls["href"].startswith("https://news.naver.com"):
                    news_detail = get_news(urls["href"])

"_sp_each_url" 라는 클래스이름을 가진 부분을 가지고 와서 urls라는 변수에 집어넣는다.

 

'_sp_each_url'은 요 '네이버뉴스'로 가는 하이퍼링크가 걸린 부분의 클레스명이다.

 

만약 urls 중에 href가   "https://news.naver.com"으로 시작하면 

get_news 함수를 실행시켜 크롤링을 해온다.

 

f.write("{}\t{}\t{}\t{}\t{}\n".format(news_detail[1], news_detail[4], news_detail[0], news_detail[2],news_detail[3]))

get_news 함수를 통해 크롤링해 온 결과를 메모장에 입력을 한다.

이때 제목과 내용, 날짜, 신문사,링크 등 구분을 할 수 있게 사이사이에 tab을 넣는다. (tab = \t)

 

 

3-3. get_news 함수

- 네이버 뉴스 홈에 등록된 기사를 크롤링해오는 함수

def get_news(n_url):
    news_detail = []

    breq = requests.get(n_url)
    bsoup = BeautifulSoup(breq.content, 'html.parser')

    title = bsoup.select('h3#articleTitle')[0].text  #대괄호는  h3#articleTitle 인 것중 첫번째 그룹만 가져오겠다.
    news_detail.append(title)

    pdate = bsoup.select('.t11')[0].get_text()[:11]
    news_detail.append(pdate)

    _text = bsoup.select('#articleBodyContents')[0].get_text().replace('\n', " ")
    btext = _text.replace("// flash 오류를 우회하기 위한 함수 추가 function _flash_removeCallback() {}", "")
    news_detail.append(btext.strip())
  
    news_detail.append(n_url)
    
    pcompany = bsoup.select('#footer address')[0].a.get_text()
    news_detail.append(pcompany)

    return news_detail

crawler 함수로 부터 n_url을 받아서 크롤링을 해온다.

- 결과를 new_detail이라는 list로 저장하여 리턴 한다.

 

 

3-4. execel_make 함수

def excel_make():
    data = pd.read_csv(RESULT_PATH+'contents_text.txt', sep='\t',header=None, error_bad_lines=False)
    data.columns = ['years','company','title','contents','link']
    print(data)
    
    xlsx_outputFileName = '%s-%s-%s  %s시 %s분 %s초 result.xlsx' % (now.year, now.month, now.day, now.hour, now.minute, now.second)
    #xlsx_name = 'result' + '.xlsx'
    data.to_excel(RESULT_PATH+xlsx_outputFileName, encoding='utf-8')

  위에서 만든 메모장 파일을 csv 형식으로 불러와서 data 변수에 저장한다.

data 변수에 columns명을 주고 excel 파일로 저장한다.

이때 이름은 datetime 라이브러리의 now함수를 사용하여 현시각으로 저장한다.

 

04. 실행 결과

코드를 실행하고

크롤링할 입력값들을 입력해 줍니다.

위에서 설명했듯이 네이버 뉴스 홈에 등록된 기사가 생각보다 많지 않으니

많은 크롤링 결과를 얻으려면

최대 출력할 페이지수를 크게 적어주세요! (대신 그만큼 크롤링하는데 시간이 좀 더 소모됩니다)

 

 

크롤링 성공

크롤링이 성공!

31 rows x 5 columns 가 엑셀로 저장되었네요.

10페이지를 크롤링했는데 결과가 31개뿐...

 

 

크롤링 결과 저장 경로

크롤링 결과 저장경로 (RESULT_PATH) 로 가보면 파일이 2개 있을 겁니다.

오늘 포스팅한 크롤러가 

contents_text.txt 파일로 저장했다가 엑셀 파일로 저장하기 때문에 파일이 2개입니다.

 

우선 txt파일 먼저 열어봅시다.

 

 

크롤링 txt 파일

텍스트 파일을 열어보니 날짜와 신문사 내용 링크가 tab을 기준으로 구분이 되어있는것을 알 수있습니다.

한줄로 되어있어서 기사 전문이 아닌걸로 착각할수 있으나 전문 맞습니다!

 

 

엑셀 파일

엑셀파일도 문제 없네요 ㅎㅎ

 

 

 


코드 전체는 github에 올려 놨습니다.

 

아래 링크로 들어가서

'Clone or Donwload' - 'Download Zip ' 을 눌러 다운 받으세요~


https://github.com/sbomhoo/naver_news_crawling_perfect

 

sbomhoo/naver_news_crawling_perfect

네이버 뉴스 전문 크롤링. Contribute to sbomhoo/naver_news_crawling_perfect development by creating an account on GitHub.

github.com


beautifulsoup 네이버 뉴스, git 네이버 뉴스 크롤링, naver news 크롤링, naver 크롤링, python crawling, 네이버 뉴스 전체 크롤링, 

네이버 뉴스 크롤링, 뷰티풀수프, 뷰티플수프 크롤링, 웹 크롤링, 크롤링, 파이썬, 파이썬 네이버 크롤링, 파이썬 크롤

  1. Jason 2019.05.28 21:14

    감사합니다!! 이런 문제가 있었네요.. 막막했는데 도움 많이 됐어요 ㅜㅜ

  2. moon 2019.08.28 13:57

    블로그 크롤링도 포스팅 해주시면 안될까요ㅜㅜ?

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.08.28 14:21 신고

      제가 일다니느라
      크롤러 개발하고 포스팅 할 시간이 읎네요 ㅠㅠ


      네이버 open API 등록 절차가 필요하긴하지만
      이분 깃허브에 올리신 코드 참고 하시면 될거 같아요!
      https://github.com/xotrs/naver-blog-crawler




  3. 전예은 2019.09.19 20:53

    Selenium 말고 Beautifulsoup을 사용한 이유가 있나요?
    Beautifulsoup사용시 크롤링 결과에 뉴스 기사가 중복되서 저장되요 ㅜㅜ

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.09.19 21:59 신고

      Selenium 사용하셔도 무방합니다.
      다만 selenium은 웹드라이버를 이용하면
      신문기사를 하나 하나 들어가서 긁어오고 나오고 들어가서 긁어오고 나오고
      의 작업을 반복해야하기때문에
      크롤링 하는데 시간이 더 걸릴겁니다.


      기사가 2~3개 중복 저장되는 것은 아래 참고 해주세요~

      ========================
      1.
      기사가 중복되는 것은 그 기사가 중복으로 올라와서 입니다.
      저도 방금 크롤링 해 본 결과 10번 레코드와 13번 레코드가 똑같은 것이 나오더군요.
      그래서 혹시나 해서 같은 조건으로 네이버에 신문 검색을 해보니 10번째 기사와 13번째 기사가
      똑같은 내용으로 2개 올라왔네요..!

      이건 아마 신문사에서 돈을 벌기 위해 같은 내용 기사를 여러 번 쓴 것이 아닌가 생각이 됩니다.

      코드 상에는 문제가 없는 것으로 확인되었습니다.

      출처: https://bumcrush.tistory.com/116?category=697185 [맑음때때로 여름]

  4. moon 2019.09.20 13:25

    검색어를 여러개 입력해서 출력이 키워드당 나오게 하려면 어떻게 해야 될까요?

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.09.20 22:53 신고

      검색어를 한번에 여러개 입력해서
      각각의 검색어의 출력물을 한번에 얻고 싶다는 말씀이시죠??

      흠 글쎄요...
      제 수준에서 생각이 드는 것은
      키워드를 배열로 받아서 for을 돌리면 되려나싶기도 한데,..
      코드가 어마무시해 질 것 같네요;

  5. hp_uj 2019.09.22 20:25

    안녕하세요 :) 도움이 많이 됐습니다.
    참고해서 크롤링을 해봤는데, 일정 페이지수를 넘어가면 자꾸 에러가 뜨더라구요 ㅠㅠ
    pandas.errors.ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.
    이렇게 뜨는데, 이건 메모리가 부족해서 뜨는걸까요 ㅠ?

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.09.23 23:24 신고

      네 아무래도 pandas Buffer overflow caught라고 하는거 보니
      한번에 많은 데이터를 집어넣으려하니 오류가 발생하는거 같네요 ㅠㅠ

      학습용으로 개발한 코드라 완벽하지 않은 점 양해 부탁드립니다~

  6. 혀누 2019.10.08 20:08

    안녕하세요. 올려주신 코드 잘 사용하고 있습니다!
    그런데 사용 도중 궁금한 점이 있어서 댓글 남깁니다.
    저는 우선 전 포스팅의 코드와 합쳐서 기사를 오래된 순으로 정렬해놓고 크롤러를 사용하고 있습니다. 그 때,maxpage를 크게 하고 날짜 범위를 좁게 하면(예를 들어 maxpage=10000, s_date=2019.01.01, e_date=2019.01.01), 2019.01.01의 기사를 다 찾더라도 maxpage만큼 iteration을 다 돌아서 오래 걸리던데, e_date까지 크롤링을 다 하고 크롤러가 종료하게 되려면 어떻게 고치면 될까요??

  7. 전예은 2019.11.14 22:21

    안녕하세요!
    현재 이 코드를 약간 변경해서 selenium과 beautifulsoup을 사용해 크롤링을 하고 있는데요,
    기사가 중복되서 수집이 되는데 저번에 신문사가 돈 벌려고 중복해서 기사를 쓰는것 같다고 하셨는데,
    그상황과는 별개로 기사의 url은 유니크한 값인데 url값이 중복이 되서 저장되는 경우가 있네요 ㅜㅜ

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.11.15 14:51 신고

      똑같은 url이 중복 저장된다는 소리시죠??
      혹시 키워드랑 시작날짜 끝날짜 페이지수 어떻게 했는지 알수 있나요?
      결과 좀 보고싶어서요

  8. bbb 2019.11.20 19:18

    안녕하세요.
    순서대로 했는데
    EmptyDataError: No columns to parse from file
    이런 에러가 발생해서요.
    혹시 어떤 문제인지 아시나요?ㅠㅠ

    • 아하하하 2019.12.11 10:42

      저도 같은 문제가 있었는데..
      크롤러함수에 하나하나 돌려봤을 때 데이터가 저장되는지 확인해보고 거기에 데이터가 안쌓인거면..
      키워드를 보편적인거로 바꿔서 검색하니 되더라구요!

  9. 전예은 2019.11.22 01:01

    안녕하세요 !
    중복 url 관련 댓글 달았었는데요,
    키워드 : '연료 전지 자동차'
    시작 페이지, 끝페이지 없이 selenium click()으로 1~400(네이버에서 제공되는 최대 페이지) 까지 수집하고 있고요,
    기간 : 2000.01.01~2019.11.01 로 수집하고 있습니다 !

    네이버에서 중복기사(url이 같은기사)가 있는지 확인해보려고 직접 키워드를 검색해본 결과,
    중복 기사(url이 같은)가 p.4 와 p.11에 올라와 있는걸 확인했습니다 !
    그래서 저는 수집할때, 유니크한 url일때만 f.write()를 하도록 해줬습니다 ㅜㅜ!

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.12.12 10:32 신고

      답변 감사합니다.

      다른분들에게 도움이 될것 같네요 ^^

    • tosorl 2019.12.17 17:23

      전예은님 안녕하세요 혹시 이글을 보신다면 댓글 달아주실 수 있나요??

      부탁드립니다.

  10. LEE 2019.12.10 23:16

    안녕하세요. ^^

    파이썬 크롤링에 관심있는 학생입니다.

    올려주신 코드 덕분에 많이 도움이 되었습니다.

    감사합니다.

    한가지 여쭙고 싶은 부분이 있는데요, 위의 코드에서 '특정 신문사'만 입력하여, 그 신문사의 네이버 링크 기사를 추출하고 싶은데

    '특정 신문사' 지정 코드는 어떻게 되는지 알 수 있을까요 ㅠ

    • Favicon of https://bumcrush.tistory.com bumcrush 2019.12.12 10:30 신고

      네이버에서 신문사 필터링을 적용하고 url을 확인해보았는데요,
      url에 신문사에 해당하는 코드가 나타나지 않더라구요..

      아무래도 특정 신문사의 기사를 추출하시려면
      해당 신문사의 홈페이지에서 크롤링 하는 방법으로 하셔야할 것 같습니다.

  11. leganza 2020.01.20 16:36

    jupyter notebook에서 3-2. crawler함수 부분까지 코드를 넣고 실행했는데 아래와 같은 에러 메시지가 뜨는데 무슨 이유일까요?

    ---------------------------------------------------------------------------
    NameError Traceback (most recent call last)
    <ipython-input-8-5cf1e1918456> in <module>
    15
    16 excel_make() #엑셀로 만들기
    ---> 17 main()
    18
    19 def crawler(maxpage,query,s_date,e_date):

    <ipython-input-8-5cf1e1918456> in main()
    12 s_date = input("시작날짜 입력(2019.01.01):") #2019.01.01
    13 e_date = input("끝날짜 입력(2019.04.28):") #2019.04.28
    ---> 14 crawler(maxpage,query,s_date,e_date) #검색된 네이버뉴스의 기사내용을 크롤링합니다.
    15
    16 excel_make() #엑셀로 만들기

    NameError: name 'crawler' is not defined

    • Favicon of https://bumcrush.tistory.com bumcrush 2020.01.21 08:45 신고

      크롤러라는 이름의 함수가 졍의가 안되서 난 오류네요
      제가 코드를 설명하기 위해 분할해서 포스팅하욨는데요, 아마 붙여넣는 과정에서 뭔가 빠졌을 수도 있겠네요
      맨 아래 github가셔서 전문 다운받으셔서 테스트 해보셔요 ^^

      아 그리고 쥬피터노트북은 웹기반으로 돌아가기 때문에 좀 불안정한 면이 없잖아 있더라구요 spyder라는 파이썬 에디터가 있을텐데 이걸로 실행하는 것을 추천드립니다!

    • Favicon of https://bumcrush.tistory.com bumcrush 2020.01.21 08:45 신고

      크롤러라는 이름의 함수가 졍의가 안되서 난 오류네요
      제가 코드를 설명하기 위해 분할해서 포스팅하욨는데요, 아마 붙여넣는 과정에서 뭔가 빠졌을 수도 있겠네요
      맨 아래 github가셔서 전문 다운받으셔서 테스트 해보셔요 ^^

      아 그리고 쥬피터노트북은 웹기반으로 돌아가기 때문에 좀 불안정한 면이 없잖아 있더라구요 spyder라는 파이썬 에디터가 있을텐데 이걸로 실행하는 것을 추천드립니다!

  12. leganza 2020.01.21 14:14

    빠른 피드백 주셔서 감사합니다.
    말씀 주신대로 github에서 코드 전문을 copy하여 테스트했음에도 여전히 실행이 안됩니다. ㅜㅜ
    마지막 두 줄.. 엑셀로 만들기 전까지는 에러 없이 넘어갔는데 마지막 두 줄까지 입력하고 실행하니 아래의 메시지가 나왔습니다.
    ---------------------------------------------------------------------------
    FileNotFoundError Traceback (most recent call last)
    <ipython-input-3-8154ce390b06> in <module>
    90
    91 excel_make() #엑셀로 만들기
    ---> 92 main()

    <ipython-input-3-8154ce390b06> in main()
    87 s_date = input("시작날짜 입력(2019.01.01):") #2019.01.01
    88 e_date = input("끝날짜 입력(2019.04.28):") #2019.04.28
    ---> 89 crawler(maxpage,query,s_date,e_date) #검색된 네이버뉴스의 기사내용을 크롤링합니다.
    90
    91 excel_make() #엑셀로 만들기

    <ipython-input-3-8154ce390b06> in crawler(maxpage, query, s_date, e_date)
    42 page = 1
    43 maxpage_t =(int(maxpage)-1)*10+1 # 11= 2페이지 21=3페이지 31=4페이지 ...81=9페이지 , 91=10페이지, 101=11페이지
    ---> 44 f = open(r"C:Users\User\Documents\textmining/contents_text.txt", 'w', encoding='utf-8')
    45
    46 while page < maxpage_t:

    FileNotFoundError: [Errno 2] No such file or directory: 'C:Users\\User\\Documents\\textmining/contents_text.txt'

    • Favicon of https://bumcrush.tistory.com bumcrush 2020.01.21 14:59 신고

      에러 마지막줄 보시면 입력하신 파일경로가 잘못되었네요 파일 경로 수정해주셔요~

    • Favicon of https://bumcrush.tistory.com bumcrush 2020.01.21 14:59 신고

      에러 마지막줄 보시면 입력하신 파일경로가 잘못되었네요 파일 경로 수정해주셔요~

  13. leganza 2020.01.21 18:13

    문제 해결했습니다.!!
    몇 번의 에러가 또 있었지만, 결국 완성했어요. 기분 너무 좋네요 ^^
    좋은 자료 공유해주셔서 정말 감사합니다.
    다음은 블로그를 크롤링해서 같은 결과물을 얻는게 목표인데 왠지 만만치 않을 것 같네요.
    기회되면 팁이라도 알려주세요. 굿럭~~

+ Recent posts