일일 뉴스와 문자 알림 - 제1부분
케냐에서 언론 매체가 그들의 API를 공개적으로 방문하는 것을 허락하지 않기 때문에 나는 인터넷을 이용하여 뉴스 기사를 얻는 것을 선택했다.
면책 성명: 본고는 순전히 교육 목적에서 나온 것이기 때문에 나는 누구도 적당한 권한을 부여받지 않은 상황에서 어떤 사이트를 접속하는 것을 주장하지도 지지하지도 않는다.로봇 사이트를 자주 읽는다.txt.
동시에 너무 많은 요청이 있는 사이트가 과부하되지 않도록 하고, 당신의 요청을 분리해서 서버가 데이터를 처리할 수 있도록 하세요.
이 모든 것을 정리한 후에 나는 업무 절차를 설명할 것이다.우리는 먼저 사이트를 훑어보고, 앞의 3대 제목과 전체 문장의 링크를 얻는다.그리고 우리는 데이터로 메시지를 구축하여 우리 자신에게 보내고 이를 클라우드에 배치하여 지속적으로 운행하도록 한다.
시작 요구 사항
본문과 후속 코드를 효과적으로 따르기 위해서는 다음과 같은 선결 조건이 필요합니다.
제1단계
모든 코드를 저장할 디렉터리를 만듭니다.디렉토리로 전환합니다.
mkdir daily-news-scraper
cd daily-news-scraper
프로젝트를 위한 새로운 가상 환경을 만들거나 이전 가상 환경을 활성화합니다.
도서관.
python -m venv .
source bin/activate
pip install africastalking python-dotenv newspaper3k
pip freeze > requirements.txt
2단계
python에는 대량의 웹 캡처 라이브러리가 있습니다. 예를 들어 beatifulsoup
requests , scrapy . 너도 this article 를 읽어서 광범위한 개술을 얻을 수 있다.
나는 newspaper3k 도서관을 선택했다. 왜냐하면 그것은 문장을 추출하고 정리하기 위해 설계된 것이기 때문이다.요청, lxml, beatifulsoup도 사용했습니다.이것은 글을 가져오고 추출하는 많은 베이스 코드가 추상적이기 때문에 시작하기 쉽다는 것을 확보했다.
그만 말하고 인코딩을 시작합시다!mygithub의 전체 코드를 검사하거나
모든 코드를 저장하기 위해
news_scraper.py
스크립트를 만듭니다.touch news_scraper.py
원하는 IDE 또는 편집기에서 열고 원하는 라이브러리를 가져옵니다.# news_scraper.py
import os
import newspaper
import africastalking as at
from dotenv import load_dotenv
그리고 우리는 우리의 모든 중요한 증거를 저장하기 위해 .env
파일을 만들었다.이것은 안전 방면의 최상의 실천과 일치한다.touch .env
# Both can be obtained from your account console on Africas Talking
username=Username-here
api_key=apikey-here
mobile_number=+2547XXXXXXXX
위 번호가 E.164 format인지 확인하십시오.단계
계속해서 환경 값을 로드하고 Africas Talking 클라이언트를 초기화합니다.이것은 변수
username
와 api_key
를 우리에게 분배한 값을 매개 변수로python sdk를 말하는 아프리카인에게 전달하는 것을 통해 이루어진 것이다. #news_scraper.py
load_dotenv()
# get the environment values from the .env file
api_key = os.getenv('api_key')
username = os.getenv('username')
mobile_number = os.getenv('mobile_number')
# Initialize the Africas talking client using username and api api_key
at.initialize(username, api_key)
# create a variable to reference the SMS client
sms = at.SMS
현지에서 국제, 그리고 다른 종류에 이르기까지 상당히 많은 뉴스 출처가 있다.선택은 당신의 개인적인 취향과 수요에 달려 있다.Business Daily Africa와 Standard Media 플랫폼을 선택했습니다.나는 각 사이트의 홈페이지에서 검색하는 것을 선택했다.그러나 귀하는 사이트 링크를 통해 기술, 예를 들어 유형을 지정할 수 있습니다.참조에 편리하도록 지정된 URL을 변수에 할당합니다.제목과 URL을 저장하기 위한 빈 목록
message
도 만들었습니다.# news_scraper.py
# create variables to hold urls to be scraped
business_daily = "https://www.businessdailyafrica.com/"
standard_daily = "https://www.standardmedia.co.ke/"
# create an empty list to hold the headlines and urls
message = []
현재, 우리는 함수를 만들 것입니다. 이 함수는 url을 매개 변수로 하고, 신문 라이브러리로 url에서 데이터를 추출하여, 데이터를 목록에 삽입하고, 앞의 3대 제목과 전체 문장의 링크를 가져옵니다.이 함수는 제목과 URL을
message
목록에 추가합니다. # Create a function to scrape the top 3 headlines from news sources
def top_news(url):
# get top articles on standard standard
news_source = newspaper.build(url,)
top_articles = []
for index in range(3):
article = news_source.articles[index]
article.download()
article.parse()
top_articles.append(article)
for a in top_articles:
print(a.title, a.url)
message.append(a.title)
message.append(a.url)
top_news(business_daily)
top_news(standard_daily)
신문 도서관은 웹 사이트 링크를 얻고 쉽게 교체할 수 있는 목록을 되돌려 준다.build()
변수 중의 매 문장에 대해 우리는 news_source
과download()
방법이라고 부른다.모든 문장은 다운로드, 해석, 목록에 추가됩니다.자세한 내용은 documentation를 참조하십시오.문자메시지에서 문자와 특수 기호에 대한 제한으로 우리는 목록을 세 편의 문장으로 연결할 것이다.
그리고 모든 제목과 URL을
parse()
목록에 할당합니다.이것은 우리의 맞춤형 뉴스 제목이 될 것이다.지금 문자 주세요!
이제, 우리는 마침내 자신의 최신 소식을 통지했다.Africas Talking sms API를 사용할 예정입니다.
제목 목록과 핸드폰 번호를 매개 변수로 하는 함수
message
를 만들 것입니다.이것함수는 우리에게 메시지를 보내려고 시도할 것입니다.
# news_scraper.py
# Create a function to send a message containing the scraped news headlines.
def send_message(news: list, number: int):
try:
response = sms.send(news, [number])
print(response)
except Exception as e:
print(f" Houston we have a problem: {e}")
# Call the function passing the message and mobile_number as a arguments
send_message(str(message), mobile_number)
try-catch 블록을 추가하면 우리가 먼저 메시지를 보내고 실패할 때 알림을 받을 수 있습니다.디버깅에 편리하도록 이상도 출력했습니다.마지막으로 환경 변수에 정의된 것처럼 목록을 문자열과 숫자로 전달하기 위해 send_message
함수를 호출합니다.스크립트를 실행할 때 현재 제목과 링크를 포함하는 메시지를 받을 것입니다.예는 다음과 같습니다.
만약 당신에게 어떤 문제나 의견이 있다면.댓글 또는
본고는 뉴스 스크레이퍼의 개발과 배치를 소개하는 데 목적을 두고 있다.단, 배치와 URL 단축을 한 문장 (두 번째 부분) 에 단독으로 두면 더욱 쉽게 실현될 수 있다.나는 두 번째 부분의 링크로 본문을 업데이트할 것이다.
Reference
이 문제에 관하여(일일 뉴스와 문자 알림 - 제1부분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ken_mwaura1/daily-news-scraper-and-sms-notifications-part-one-15m9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)