write
, read
, add
해 보기똑같은 내용을 반복해서 작성할 때, 하나의 함수로 정의해두면 편리하게 사용할 수 있음
함수에는 매개변수와 전달인자(인수)가 있다.
- keywords 인자 : ** 두 개 (딕셔너리 형태로 전달)
- arguments 인자 : * 한 개 (리스트나 튜플 형태로 전달)
** 함수에서 인자 등 정보 찾을 때 ? : Docstring ?? : Source 예) range? add? 함수??
프로그램이 만든 결과물은 파일을 생성하여 넣고, 넣은 내용을 읽고, 새로운 내용을 추가할 수 있다.
# 첫 번째 방법 f = open("파일명 이름", "파일 열기 모드") f.close() # 생략해도 되지만, 열려있는 파일 객체를 닫아주는 역할을 함
# 두 번째 방법 -- with문을 사용하면 close가 자동으로 불러와짐 with open("파일명 이름", "파일 열기 모드") as 파일명_별명: 파일을 열어 실행시킬 문장 작성
파일열기모드 설명 r 읽기모드 - 파일을 읽기만 할 때 사용 w 쓰기모드 - 파일에 내용을 쓸 때 사용 a 추가모드 - 파일의 마지막에 새로운 내용을 추가시킬 때 사용
from datetime import datetime
from bs4 import BeautifulSoup
import requests
# 네이버 it 일반 뉴스를 가져오는 함수
def scraping_it_news():
url = "https://news.naver.com/main/list.naver?mode=LS2D&mid=shm&sid2=230&sid1=105"
response = requests.get(url, headers={"user-agent": "Mozilla/5.0"})
soup = BeautifulSoup(response.text, 'html.parser')
# html 을 텍스트로 가져오고, 파일에 넣어주기
file = open("it_news.html","w")
file.write(response.text)
file.close()
# 뉴스 헤드라인만 가져오기
results = soup.select("dl > dt > a > img")
headlines = []
for result in results:
headlines.append(result["alt"])
# 오늘의 날짜 정보 가져오기
print(datetime.today().strftime("%Y년 %m월 %d일의 네이버 IT 일반 뉴스 정보입니다.\n"))
# 순서에 맞게 뉴스 출력하기
rank = 1
for headline in headlines:
print(f"{rank}: {headline}\n")
rank += 1
# 함수 호출하기
scraping_it_news()
2022년 10월 18일의 네이버 IT 일반 뉴스 정보입니다.
1: 카카오 "다음 메일 오늘 복구 완료 예상"
2: 원익그룹, 배터리 장비 통합법인 '원익피앤이' 11월 출범
3: 원자력硏 연구소기업 ‘서울프로폴리스’…연매출 500억 도전장
4: 인스웨이브 "PC·모바일·키오스크 연결 `유니버설 앱 플랫폼` 완성하겠다"
5: 인공지능 석학 한 자리에 모인다…삼성 AI 포럼 개최
6: "40억 주인공은 누구?"…스타트업 50여곳 경쟁 벌인다
7: SK텔레콤, ZEM 업그레이드…'습관 리포트' 추가
8: 쿠카게임즈, ‘삼국지 전략판’ 게임 예능 ‘G식의 밤’ 시즌 3서 선
9: 카카오-SK C&C, '전력차단' 시점 놓고 대립…1만대 여전히 장애
10: '먹통 사태' 그날, 네이버 라인·티맵은 웃었다…카카오톡 '침울'
11: 라이엇 게임즈, 호주 워게이밍 시드니 스튜디오 인수
12: '카카오 사태' 나흘째, 완전 복구 언제쯤?…"주요 서비스 14개 중 11개 복구"
13: 알서포트, 라이브 스트리밍 서비스 '모비즌 스튜디오' 출시
14: 네이버 "판교 화재 관련 장애 모두 정상 복구"…일부 블로그 문제만 남아
15: '러쉬코리아' 20주년 쇼케이스…5800명 감탄시킨 IT와 자연주의 철학
16: LG전자, 하프코 2022서 멀티브이 아이 등 공조솔루션 선보여
17: 카카오 데이터센터 규제 한 목소리 낸 언론, 과거엔 달랐다
18: CJ ENM, 일본서 876만명에게 2030부산세계박람회 알렸다
19: [그래픽] 카카오 먹통 사태 중 대체 앱 사용시간 증가율
20: 'CES2023' 규모 두 배 확장 '역대 최대'