본문 바로가기
코딩/Python

[파이썬 활용] 네이버신문 랜덤으로 보기/random.choice(), termux-open-url

by 나홀로코더 2022. 8. 4.
반응형

목차

1. 주제 소개

2. 스크립트 작성


 

1. 주제 소개

 

일상생활에서 소소하게 파이썬을 활용하는 시리즈를 이어간다.

 

필자는 인터넷뉴스를 꽤나 많이 본다. 근래에는 포털의 메인에 노출되는 뉴스 위주로 보다 보니 특정 정치적 이슈에 관한 뉴스를 지나치게 많이 접하게 되는 것 같다는 생각이 들었다. 그래서 다양한 뉴스를 접하기 위해 종이신문에 실리는 기사들을 골고루 읽어봐야겠다고 생각했다.

 

네이버뉴스에서는 “신문보기” 코너가 제공된다. 종이신문과 같은 기사를 모아 인터넷에서 볼 수 있도록 하는 것 같다.

 

아래 페이지를 들어가 보면 각 신문사별로 1면 톱기사가 노출된다.

https://news.naver.com/newspaper/home

 

그리고 각 신문사의 페이지를 들어가서 보면 역시 “신문보기” 탭이 있는데, 여기에서는 해당 신문사의 종이신문 기사를 다 볼수 있다.

https://media.naver.com/press/023/newspaper

 

그런데 특정 신문사의 기사만 읽기보다는 여러 신문사를 골고루 읽고 싶다. 그렇다고 해서 하루에 여러 신문사의 기사를 다 읽을 시간은 없다. 그렇다면 매일 신문사를 바꿔가며 읽으면 될 것 같다.

 

그냥 순서를 정해 놓고 돌아가며 볼 수도 있지만, 매일 랜덤으로 신문사를 골라 해당 신문사의 “신문보기” 코너를 열어 주는 스크립트를 만들어 사용하니 오늘은 파이썬이 어떤 신문을 골라 줄까, 페이지가 열리는 동안 조금의 기대감을 느낄 수 있다.

 

반응형

 

2.스크립트 작성

 

코드는 채 몇 줄이 되지 않는다. 파이썬의 내장 모듈인 os와 random을 사용하고, 스마트폰에서 파이썬을 사용할 수 있는 termux를 사용한다.

 

먼저 우리가 접근하려는 페이지의 URL 주소를 보자. 특정 신문사의 신문보기 페이지를 들어가 보면 아래와 같이 …com/press/다음에 세 자리 숫자가 오고, 그 뒤에 /newspaper가 붙는다.

 

https://media.naver.com/press/023/newspaper

 

직관적으로 알기 쉬운 구조이다. 023은 신문사별로 달라진다.

 

관심 있는 신문사들의 신문보기 페이지를 들어가서 URL 주소를 확인해 목록을 작성한다. 리스트에 숫자만 담아도 되겠지만, 보기 좋게 하려고 딕셔너리로 했다.

 

newspapers = {
	"경향": "032",
	"국민": "005",
	"동아": "020",
	"문화": "021",
	"서울": "081",
	"조선": "023",
	"중앙": "025",
	"한겨레": "028",
	"한국": "469",
	"매경": "009",
	"서울경제": "011",
	"한경": "015"
	}

 

여기까지만 하면 시간 걸리는 일은 이미 다 한 것이다. 이제 딱 네 줄만 더 작성하면 된다.

 

먼저, 신문사를 선택하는 코드이다. random 모듈의 choice 메서드를 사용한다.

 

신문사 번호를 리스트로 저장했다면 그 리스트를 choice 메서드의 인자로 바로 넘겨주면 되고, 필자처럼 딕셔너리로 했다면 다음과 같이 딕셔너리의 값들을 리스트로 바꾼 뒤에 넘겨준다.

 

import random
choice = random.choice(list(newspapers.values()))

 

마지막으로 os 모듈의 system 메서드를 이용해서 인터넷 브라우저로 특정 URL을 열어 주는 termux 커맨드를 실행한다.

 

f 스트링을 사용해서 얖에서 정한 신문사 번호를 URL 주소에 넣어 준다.

 

import os
os.system(f"termux-open-url https://media.naver.com/press/{choice}/newspaper")

 

완성된 코드는 다음과 같다. 이 스크립트를 실행하면, newspapers에 저장한 신문사들 중 한 곳의 “신문보기” 코너가 랜덤으로 열린다.

 

import os
import random

newspapers = {
	"경향": "032",
	"국민": "005",
	"동아": "020",
	"문화": "021",
	"서울": "081",
	"조선": "023",
	"중앙": "025",
	"한겨레": "028",
	"한국": "469",
	"매경": "009",
	"서울경제": "011",
	"한경": "015"
	}

choice = random.choice(list(newspapers.values()))
os.system(f"termux-open-url https://media.naver.com/press/{choice}/newspaper")
반응형

댓글