일일 뉴스와 문자 알림 - 제1부분

12855 단어 newssmspythontutorial
나는 천희 세대로서 보통 소셜 미디어나 글에서 뉴스를 얻는다.지금 나는 내가 유일하게 이런 사람이 아니라는 것을 확신한다. 그러나, 신문을 볼 시간이나 정력을 찾으려고 하거나, 더 나쁜 것은 신문을 읽는 것이 나 개인에게 도전이다.물론 정보를 통해 정기적으로 뉴스 업데이트를 제공하는 구독 서비스가 충분하다.그러나 나는 나의 용례에 따라 맞춤형 해결 방안을 더욱 좋아한다.
케냐에서 언론 매체가 그들의 API를 공개적으로 방문하는 것을 허락하지 않기 때문에 나는 인터넷을 이용하여 뉴스 기사를 얻는 것을 선택했다.
면책 성명: 본고는 순전히 교육 목적에서 나온 것이기 때문에 나는 누구도 적당한 권한을 부여받지 않은 상황에서 어떤 사이트를 접속하는 것을 주장하지도 지지하지도 않는다.로봇 사이트를 자주 읽는다.txt.
동시에 너무 많은 요청이 있는 사이트가 과부하되지 않도록 하고, 당신의 요청을 분리해서 서버가 데이터를 처리할 수 있도록 하세요.
이 모든 것을 정리한 후에 나는 업무 절차를 설명할 것이다.우리는 먼저 사이트를 훑어보고, 앞의 3대 제목과 전체 문장의 링크를 얻는다.그리고 우리는 데이터로 메시지를 구축하여 우리 자신에게 보내고 이를 클라우드에 배치하여 지속적으로 운행하도록 한다.

시작 요구 사항


본문과 후속 코드를 효과적으로 따르기 위해서는 다음과 같은 선결 조건이 필요합니다.
  • 파이톤과 pip(현재 3.9.2)3.5 이상의 버전은 모두 사용할 수 있어야 합니다.
  • Africas Talking account.
  • 계정의 Api 키와 사용자 이름입니다.프로그램을 만들고api 키를 기록합니다.
  • 만약 네가 이 스크립트를 배치할 계획이라면, 나는 Heroku를 추천한다
  • Heroku Account
  • 제1단계


    모든 코드를 저장할 디렉터리를 만듭니다.디렉토리로 전환합니다.
              mkdir daily-news-scraper
              cd daily-news-scraper
    

  • 프로젝트를 위한 새로운 가상 환경을 만들거나 이전 가상 환경을 활성화합니다.
  • python 패키지 관리자(pip)를 사용하여Africa를 설치하여python sdk,python dotenv 라이브러리와 신문지 3K 추적
    도서관.
  • 설치된 라이브러리를 수요에 저장합니다.txt 파일
  •       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 클라이언트를 초기화합니다.이것은 변수usernameapi_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 AfricaStandard 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_sourcedownload() 방법이라고 부른다.모든 문장은 다운로드, 해석, 목록에 추가됩니다.자세한 내용은 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 단축을 한 문장 (두 번째 부분) 에 단독으로 두면 더욱 쉽게 실현될 수 있다.나는 두 번째 부분의 링크로 본문을 업데이트할 것이다.

    좋은 웹페이지 즐겨찾기