오늘은 뉴스기사를 크롤링하는 웹크롤러를 만들어 보겠습니다.
^^ 뉴스기사를 모아서 보면, 많은 양의 정보를 한번에 간편하게 볼 수 있을거 같네요.
아래 Source는 RunningWater님 블로그를 통해 배운 내용입니다. (제 편의에 의해 Source의 일부만 변형되었습니다. Source에 대한 상세 내용은 아래 RunningWater님 블로그를 참조해주세요.) 출처 : https://justmakeyourself.tistory.com/entry/newsscraping-by-python-2 |
[Source code]
1: import requests
2: from bs4 import BeautifulSoup
3:
4: # 기사의 링크들이 담기는 리스트입니다.
5: rsss = []
6: # 파일은 아래 폴더에 저장됩니다.
7: fileOut = open('RssfileOut.txt','w', encoding='utf-8')
8: # rss와 기사에서 특정 부분을 크롤링하는 함수입니다.
9: def crawler(url, parser, css_selector):
10: r = requests.get(url)
11: soup = BeautifulSoup(r.content, parser)
12: datas = soup.select(css_selector)
13: if parser == 'lxml':
14: print(datas[0].text, file=fileOut)
15: else:
16: for data in datas:
17: rsss.append(data.text)
18: # 실행코드
19: print("크롤링을 시작합니다.")
20: crawler('http://file.mk.co.kr/news/rss/rss_50300009.xml','xml','item link')
21: print("rss 추출이 완료되었습니다.")
22: for link in rsss:
23: try:
24: crawler(link, 'lxml', '#article_body')
25: print("="*20)
26: except Exception as e:
27: print(e)
28: print('진행중이에요...')
29: continue
30: print("크롤링을 종료합니다.")
31: fileOut.close()
저는 RSS뉴스 중 매일경제 신문의 부동산 섹션을 가져오는 프로그램을 작성해 보았어요.
7번행에 있는 코드는 가져온 기사를 파일로 저장해주는 코드이고
20번행에 있는 코드의 URL을 변경하면 본인이 원하는 RSS뉴스를 가져올 수 있습니다.
→ 프로그램 실행모습이에요, 크롤링 될 때 "=*20개"가 출력되면서 하나하나 크롤링 되는 거랍니다.
종료되면 크롤링을 종료합니다라는 내용이 출력되고 완료되요.
결과는 직접 확인해보세요^^
그리고 가장 중요한 뉴스 기사의 무단전재 및 재배포는 금지입니다.
꼭 명심하세요.
하나하나 생각하고 있는 것들은 구현하다 보니 점점 파이썬이 재밌어지네요.
다음에도 더 재미난 주제로 찾아올게요.