본문 바로가기
Challange

패스트캠퍼스 환급챌린지 50일차 미션 (3월 21일) : 데이터 분석 Master Class 강의 후기

by @0-0 2024. 3. 21.
반응형

 

50일차!! 와쿠와쿠

 

 

 

 

 


 

Part 3. PYTHON _ 데이터 분석 프로젝트

 

 

 

 

 

 

04. 파이썬 데이터 분석 프로젝트

 

7. 부동산 뉴스기사 키워드 추출을 통한 연도별 이슈 분석

 
1) 크롤링하기

 

- '부동산' 뉴스 기사 크롤링

first_day = pd.date_range('2018-01-01', '2023-08-31', freq='MS').strftime('%Y.%m.%d')
last_day = pd.date_range('2018-01-01', '2023-08-31', freq='M').strftime('%Y.%m.%d')
date_list = list(zip(first_day, last_day))

keyword = '부동산'

data = pd.DataFrame()
for dt in tqdm(date_list):
    dt1 = [dt[0].replace('.',''), dt[1].replace('.','')]

    for num in range(1, 101, 10):
        url = f'https://search.naver.com/search.naver?where=news&query={keyword}&sm=tab_opt&sort=0&photo=0&field=0&pd=3&ds={dt[0]}&de={dt[1]}&docid=&related=0&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so%3Ar%2Cp%3Afrom{dt1[0]}to{dt1[1]}&is_sug_officeid=0&office_category=0&service_area=1&start={num}'

        user_agent = generate_user_agent()
        headers = {'User-Agent':user_agent}

        res = requests.get(url, headers=headers)
        time.sleep(random.random())
        soup = bs(res.text, 'html.parser')

        title = [i.text for i in soup.find_all('a', class_='news_tit')]
        link = [i['href'] for i in soup.find_all('a', class_='news_tit')]
        press = [i.text for i in soup.find_all('a', class_='info press')]

        temp = pd.DataFrame({'title':title, 'link':link, 'press':press, 'date_ym':dt1[0][:6]})

        if len(title) < 1 : #크롤링이 아무것도 되지 않았으면 루프를 종료, 시간 텀을 가진 뒤 다시 크롤링
            break

        data = pd.concat([data, temp])

 

 

 

2) 질문 만들기

연도별로 부동산 전망에 대한 뉴스 키워드는 어떻게 변화했는가?

 

 

 

3) 데이터 전처리

- 키워드 추출을 위한 한글 형태소 분석기

from konlpy.tag import Mecab

mecab = Mecab()

data['NNG'] = data['title'].apply(lambda x: [i[0] for i in mecab.pos(x) if i[1] in ("NNG")])

data['year'] = data['date_ym'].apply(lambda x: int(x[:4]))
data.head()

 

- 형태소 분석기 전

data preprocessing

 

- 형태소 분석기 후

data preprocessing

 

 

 

 

 

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

 

 

:: https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

반응형