네이버 뉴스 분야별 기사 제목 모두를 가져와서, 기사 제목에서 불필요한 단어들 제거하고(불용어)
정리된 단어들 빈도 수 분석하여 워드 클라우드로 시각화해줘/
또 데이터베이스 테이블 생성 후 한시간에 한번씩 데이터 자동 저장하는 웹크롤링하는 코드를 셍성해줘
-----------------------------------------------------------------
네이버 뉴스 기사 제목을 크롤링하고, 불필요한 단어를 제거하여 빈도 수 분석 후 워드 클라우드로 시각화하는 작업은 흥미로운 과제입니다! 이를 위해 파이썬과 BeautifulSoup을 사용하여 네이버 뉴스에서 기사 제목을 추출하고, 불용어를 제거한 뒤 빈도 수를 분석하겠습니다. 또한, 데이터베이스 테이블을 생성하고 한 시간마다 데이터를 자동으로 저장하는 웹 크롤링 코드도 작성하겠습니다.
먼저, 네이버 뉴스 기사 제목을 크롤링하는 코드를 보여드리겠습니다. 아래는 파이썬 코드 예시입니다:
Python
# 필요한 라이브러리 임포트
import requests
from bs4 import BeautifulSoup
# 네이버 뉴스 URL 설정
url = "https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=100"
# 페이지 요청
response = requests.get(url)
# HTML 파싱
soup = BeautifulSoup(response.content, "html.parser")
# 기사 제목 추출
titles = soup.select(".cluster_text_headline > a")
for title in titles:
print(title.text)
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.
이 코드를 실행하면 네이버 뉴스의 최신 기사 제목을 가져올 수 있습니다. 이후 불용어를 제거하고 빈도 수를 분석하여 워드 클라우드로 시각화하는 작업을 추가로 수행하겠습니다. 데이터베이스 테이블 생성과 웹 크롤링 코드도 함께 작성하겠습니다.
-----------------------------------------------------------------
물론! 웹 크롤링은 다양한 방법으로 구현할 수 있습니다. 여기서는 몇 가지 예제를 소개해 드리겠습니다.
1. **간단한 웹 페이지 크롤링 (Python, BeautifulSoup)**:
- 이 예제에서는 Python과 BeautifulSoup 라이브러리를 사용하여 웹 페이지에서 특정 데이터를 추출하는 기본적인 크롤링을 구현합니다.
- 아래는 클리앙 중고장터에서 아이패드 관련 제목을 크롤링하는 코드 예시입니다:
```python
from bs4 import BeautifulSoup
import urllib.request
import re
# User-Agent 설정 (아이폰에서 사용하는 사파리 브라우저의 헤더)
hdr = {'User-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1'}
for n in range(0, 10):
# 클리앙 중고장터 주소
data = 'https://www.clien.net/service/board/sold?&od=T31&po=' + str(n)
# 웹 브라우저 헤더 추가
req = urllib.request.Request(data, headers=hdr)
data = urllib.request.urlopen(req).read()
page = data.decode('utf-8', 'ignore')
soup = BeautifulSoup(page, 'html.parser')
# 제목 추출
title_list = soup.find_all('span', attrs={'data-role': 'list-title-text'})
for item in title_list:
try:
title = item.text.strip()
if re.search('아이패드', title): # 아이패드 관련된 글만 출력
print(title.strip())
except:
pass
```
이 코드는 클리앙 중고장터에서 아이패드 관련 제목을 크롤링하여 출력합니다.
2. **고급 웹 크롤링 및 데이터 처리 (Java, Jsoup)**:
- 이 예제에서는 Java와 Jsoup 라이브러리를 사용하여 웹 페이지에서 복잡한 데이터를 추출하는 방법을 다룹니다.
- 예제 코드는 [여기](https://diyinfo.tistory.com/entry/%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%9B%B9-%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%88%98%EC%A7%91%ED%95%98%EB%8A%94-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%98%88%EC%A0%9C)에서 확인하실 수 있습니다.
3. **웹 스크래핑 (Python)**:
- 웹 스크래핑은 웹 페이지에서 정보를 추출하는 작업을 말합니다. 예를 들어, 검색 엔진의 웹 크롤러가 하는 일도 웹 스크래핑에 해당합니다.
- 웹 스크래핑에 대한 자세한 내용은 [여기](https://www.snugarchive.com/blog/python-web-scraping/)에서 확인하실 수 있습니다.
4. **Selenium을 이용한 웹 크롤링 (Python)**:
- Selenium은 웹 자동화 테스트 용도로 개발된 라이브러리로, 실제 브라우저를 사용하여 크롤링하는 특징이 있습니다.
- 예제 코드와 사용법은 [여기](https://jaeseokim.dev/Python/python-Selenium%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%B9-%ED%
원본: Copilot과의 대화, 2024. 6. 23.
(1) [Python] 파이썬 웹 크롤링 하는법 & 간단 예제 - 코딩팩토리. https://coding-factory.tistory.com/998.
(2) 웹 크롤링: 웹 사이트에서 데이터를 수집하는 크롤링 예제.. https://diyinfo.tistory.com/entry/%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%9B%B9-%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%97%90%EC%84%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%88%98%EC%A7%91%ED%95%98%EB%8A%94-%ED%81%AC%EB%A1%A4%EB%A7%81-%EC%98%88%EC%A0%9C.
(3) 파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제 - Snug Archive. https://www.snugarchive.com/blog/python-web-scraping/.
(4) [python] Selenium을 이용한 웹 크롤링 - 간단 사용법 및 예제. https://jaeseokim.dev/Python/python-Selenium%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C/.
(5) undefined. https://www.clien.net/service/board/sold?&od=T31&po=.
(6) undefined. https://blog.naver.com/ldw0811.
(7) github.com. https://github.com/papasmf1/python1006/tree/95bd71150e76bb7313646240e8e1da2ab867f726/%ED%81%B4%EB%A6%AC%EC%95%99%EC%A4%91%EA%B3%A0%EC%9E%A5%ED%84%B0%EA%B2%80%EC%83%89.py.
(8) github.com. https://github.com/yurimkim1/python0802/tree/6e84443a3aabec9db351bf4b68d2340b66ee5796/%ED%81%B4%EB%A6%AC%EC%95%99%EC%A4%91%EA%B3%A0%EC%9E%A5%ED%84%B0%EA%B2%80%EC%83%89.py.
(9) github.com. https://github.com/Jiseon-Park/python0405/tree/251cd8bb7e2ecd27961644ec67c9258af4c4cc76/0408_05_WebData5.py.
----------------------------------------------------------------------
<Project 팀 구성>
1조)유종윤-석성수-윤현우
2조)한량헌-이혜진-박준현
3조)김기현-이지은-윤명현
4조)황도훈-김용철-박세희
5조)정승현-백민규-남정현
6조)정운성-임재준-최수민
<모든 팀이 수행할 공통 Project 과제>
본사와 지사에 동일한 서버를 운영하되 부하를 대비하여 Load Balancer를 사용하며, 접속하는 사용자와 가까운 쪽으로 접속하도록 구성한다
서버들은 Internet에 노출시키지 않으며 회사 도메인(#.cloudshell.kr)을 사용하도록 한다. 가용성을 위해 Server들을 Availability Set을 사용하도록 하며, 원하는 Port만 노출하고 그 외 모든 포트는 차단하도록 한다. VM간의 Name Resolution을 위해 Private DNS를 운영하고 Internet User의 접속을 위해 Public DNS도 운영한다. 안정적인 운영을 위해 Azure Policy 및 Lock 설정도 한다
<팀별로 각각 다른 Project 과제>
Azure AD를 이용하여 회사 개발자들이 Azure Portal을 이용하도록 사용자를 추가하고 보안을 위해서 반드시 MFA 인증을 하도록 한다
각 소주제는 다음과 같다
- Storage 운영
- Web App 운영
- Azure VM 및 On-Premises Folder 백업
- Azure Firewall
- ACR, ACI, AKS
- Cloud 기본
==================================
체험판은 1인당 Public IP를 3개만 사용하는 것의 한계 때문에 두 명의 구독(체험판) 사용
- www.#.cloudshell.kr로 접속할 때 GSLB인 Traffic Manager를 이용하여 한국 사람은 한국 서버로, 미국 사용자는 미국 서버로 접속하게 하기
- Load Balancer를 사용하여 부하를 분산한다
- Azure 장애를 대비하여 Availability Set을 VM에 배정한다
서울 중부지역
- LB1
- VNet1
- VM1, VM2: Web(80, 443)
- VM3: DB(설치하지 않음: 1433)
** VM은 Linux CentOS
** VM3는 VM1, VM2에서만 접속 허용
** VM1, VM2, VM3는 공인 IP는 없음
** VM들간에는 Private DNS 사용
** Azure Policy(Allowed Location), Tags, Locks 설정하기
** VM의 SLA를 위해서 Availability Set 사용
** VM 관리를 위해서 NAT Port Forwarding 사용
** VM들이 인터넷에 접속하도록 NAT Gateway 사용
미국동부 지역
- LB2
- VNet2
- VM1, VM2: Web(80,443)
- VM3: DB(설치하지 않음: 1433)
** VM은 Windows Server 2022
** VM3는 VM1, VM2에서만 접속 허용
** VM1, VM2, VM3는 공인 IP는 없음
** VM들간에는 Private DNS 사용
** Azure Policy(Allowed Location), Tags, Locks 설정하기
** VM의 SLA를 위해서 Availability Set 사용
** VM 관리를 위해서 NAT Port Forwarding 사용
** VM들이 인터넷에 접속하도록 NAT Gateway 사용
<개별 프로젝트>
-공통: Azure AD에서 사용자 10명 생성, 2개의 그룹, 보안을 위해 MFA 인증 구성
1) Storage 운영: 인증은 Azure Active Directory
Blob Storage와 Azure Files 구성
AAD Group에게 Storage 구성을 위한 RBAC 설정
2) App service에서 웹사이트 구성 후에
https://www.nginx.com의 index.html 파일 다운로드하여 로컬 Git Server에 업로드하기
업그레이드를 위해서 SWAP하기
AAD Group에게 Web App구성을 위한 RBAC 설정
3) Azure VM 및 로컬 컴퓨터의 Folder를 주기적으로 Backup하기
4) Azure Firewall 및 Application Gateway 구축하기
5) ACR, ACI, AKS
6) Cloud 기본
========================
<Project 산출물>
1. PPT
2. 발표(demo 포함)
PPT를 제작할 때는 세부 상세 내용 및 각 자원에 대한 특징 및 개념을 포함시킨다
댓글 없음:
댓글 쓰기