일일 뉴스와 통지 - 제2부분

예전에...


본문의 주요 내용을 이리저리 살펴보다.우리는 newspaper3k을 이용하여 일일 뉴스 스크레이퍼를 구축했고 두 개의 뉴스 플랫폼을 스크레이퍼했다. 그것이 바로 Business Daily AfricaStandard Media이다.우리는 데이터를 분석하고 세 번째 이야기의 제목과 URL을 추출했다.우리는 또한 Africas Talking 놀라운 sms API와python sdk를 사용하여 제목을 알림으로 휴대전화 번호에 보낸다.
본고는 글 링크의 URL 단축, Heroku의 배치, 그리고 스크립트의 운행 시간을 소개할 것이다.

선결 조건

  • A bitly 계정
  • A Heroku 계정

  • 또는 github repository 보기
  • URL 단축


    이전에 우리는 단지 텍스트를 통해 뉴스 출처로부터의 링크를 보냈을 뿐이다.그러나 이것은 효율이 낮을 뿐만 아니라 원가도 비싸다.모든 텍스트가 한 텍스트의 문자 제한을 초과하기 때문에 한 텍스트의 원가가 현저히 증가한다.상하문에 대해 한 편의 텍스트의 비용은 보통 0.8 케냐 선령/텍스트이므로 Africas Talking Pricing에서 더 많이 읽으십시오.
    이전 메시지의 비용이 텍스트당 5.80 케냐 선령으로 상승한 대시보드를 보십시오.

    이것은 거대한 숫자가 아니지만, 우리는 스크립트가 하루에 30분 간격으로 운행되기를 바란다.
    이 점을 감안하여 우리의 링크에 URL을 적용할 필요가 있습니다.또한 이 솔루션을 더 많은 사용자로 확장하지 않도록 문자 메시지를 정리하는 데도 도움이 됩니다.
    많은 URL 단축 서비스가 있는데 그 중에서 가장 유명한 것은 bitly이다.그들은 매달 약 1000개의 링크를 제공하는 아낌없는 무료 계정을 가지고 있다.이것은 우리의 용례로 충분하지만, 더 많은 업그레이드 옵션이 필요하거나, 여러 계정을 만들 수 있습니다.기본 bitlyapi와 요청 라이브러리를 사용할 수 있습니다. 더 간단한 해결 방안을 발견했습니다: bitly shortener.이 라이브러리에는 많은 멋진 기능이 있습니다. 영패지를 가지고 있으면 동시에 요청을 할 수 있고, 단축할 수 있는 링크 수를 현저하게 증가시킬 수 있습니다.
        pip install bitlyshortener 
    
  • https://bitly.com/a/sign_up에 새 Bitly 계정을 등록합니다.
    [email protected]과 같은 이메일 주소는 사용할 수 있을 것입니다.
  • 구성 파일 설정에서 일반 액세스 토큰을 선택합니다.
  • 암호를 입력하고 생성 토큰을 클릭합니다.
  • 상기 모든 내용의 정렬을 완료한 후 .env을 편집하고 표시를 bitly_token으로 추가한 다음 라이브러리를 가져오고 Shortener 대상을 초기화하며 표시와 max_cache의 목록을 매개 변수로 전달합니다.
        # news_scraper.py
      import bitlyshortener as bts
      """ 
      .... 
      other code here 
      """
      # Get the token(s) and create a shortener variable
      token = os.getenv('bitly_token')
      # create a variable to takes the token and returns a shortener object
      shortener = bts.Shortener(tokens=[token], max_cache_size=256)
    
    짧은 URL을 만들기 위해 별도의 함수를 만들 수 있지만, 기존 top_news 함수에 별도의 함수를 통합하고, URL이 적당한 제목과 일치하는지 확인하는 것은 도전이다.나는 그것을 for 순환에 추가하기로 결정했다.
    # 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, memoize_articles=False)
        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:
            # Shorten the long article urls using bitly shortener lib
            short_url = shortener.shorten_urls([a.url])
            message.append(a.title)
            # Short url is a list and we need to unpack it
            for url in short_url:
                message.append(url)
    
    위 코드에서, 우리는 모든 링크를 교체하고 shorten_urls()을 호출합니다. 함수가 목록을 되돌려주기 때문에, 우리는 모든 URL을 풀고 메시지 list 변수에 추가합니다.
    shortener 대상은 usage() 함수를 제공합니다. 이 함수는 현재 할당액의 사용 상황에 대한 부동 값을 되돌려줍니다.스크립트에 가시성을 가지기 위해 print 문장을 추가하고 1000을 곱하면 백분율을 얻을 수 있습니다.
    이 단계는 선택적이지만
        # news_scraper.py
        usage = shortener.usage()
        print(f"Current url quota usage: {usage * 1000}%")
    

    배치하다


    이 프로젝트의 배치에 대해 나는 주로 Heroku를 선택했다. 왜냐하면 그들은 Github를 통해 간단한 설정을 제공했고 나는 이미 그들과 계좌를 가지고 있기 때문이다.Digital Ocean, AWS, GCP 등 다른 클라우드 제공업체를 선택하는 것은 매우 쉽습니다.
    계정을 만들고 로그인한 후에는 heroku cli을 설치하여 배포 작업을 보다 간편하게 수행하는 것이 좋습니다.이제 heroku create --app <daily-news-scraper-ke>을 실행하면 됩니다.프로그램 대시보드를 열면 새 프로그램을 볼 수 있습니다.
    Heroku가 어떤 버전의python을 실행하길 원하는지 알려 주는 runtime.txt 파일을 만들어야 합니다.이 점은 매우 중요하다. 왜냐하면 bitlyshortener는 최소 3.7 버전이 필요하고,heroku는 기본적으로 3.6 버전을 사용하기 때문이다.나는 나의 개발 환경을 복제하기 위해 나의 설정을 3.9.2로 설정했다.
      echo "python-3.9.2" > runtime.txt
    
    실행할 때 Heroku가 사용할 config vars을 지정해야 합니다.이것은 우리의 과거 상황과 매우 비슷하다
    자격 증명을 .env 파일에 저장합니다.브라우저나 터미널의heroku 컨트롤러를 통해 설정할 수 있습니다
    Heroku cli 를 사용합니다.값이 실제 자격 증명으로 변경되었는지 확인합니다.
      heroku config:set bitly_token=bitly_token_here
      heroku config:set api_key=api_key_here
      heroku config:set username=Username_here
      heroku config:set mobile_number=2547XXXXXXXX
    
    
    Git 재구매 프로토콜을 초기화하고 Heroku에 코드를 전송해야 합니다.
      git init
      heroku git:remote -a <heroku create --app daily-news-scraper-ke>
      git add .
      git commit -am 'Deploy news-scraper script'
      git push heroku master
    
    너의 응용 프로그램은 현재 Heroku에 있지만, 그것은 아무것도 하지 않았다.이 작은 스크립트는 HTTP 요청을 받아들일 수 없기 때문에 로 이동합니다.히로쿠프.com은 아무것도 할 줄 몰라요.
    그게 문제가 아니야.이 스크립트를 연중무휴 24시간 실행하려면 간단한 Heroku를 사용하여 "Heroku Scheduler"를 추가로 호출해야 합니다.이 로드 항목을 설치하려면 응용 프로그램 대시보드의 [로드 항목 구성] 버튼을 클릭합니다.

    그런 다음 검색 표시줄에서 Heroku 스케줄러를 찾습니다.

    결과를 클릭하고 "공급"을 클릭하세요.

    응용 프로그램 대시보드로 돌아가면 추가 구성 요소가 표시됩니다.

    Heroku 스케줄러 링크를 클릭하여 작업을 구성합니다.그리고 '작업 만들기' 를 누르십시오.여기서 "30분"을 선택하고run 명령에 대해 python <news_scraper>.py을 선택하십시오.작업 저장을 클릭합니다.

    지금까지 우리가 히로쿠에서 사용한 모든 것은 무료였지만 히로쿠 스케줄러는 매달 25달러의 실례에서 이 작업을 실행하지만 두 번째 실례에 비례해 배정된다.이 스크립트는 약 7초 동안 실행되기 때문에 30분에 한 번씩 실행되기 위해서는 매달 12센트만 써야 한다.

    결론


    신문 도서관의 주요 특징은 caching개가 내장되어 있다는 것이다.
    이것은 사이트의 제목을 잡으면 결과를 캐시하고 다음에 새로운 제목을 찾지 못하면 빈 목록으로 돌아간다는 것을 의미한다.이렇게 하면 많은 시간을 절약할 수 있을 뿐만 아니라, 코드는 여러 개의 제목이 비슷한 텍스트를 방지할 수 있다.

    나는 네가 이 문장을 좋아하길 희망하고, 또한 네가 읽는 중에 얻는 것이 있기를 바란다.나는 이런 프로젝트가 새로운 도구와 개념을 배우는 가장 좋은 방법 중의 하나라고 정말 믿는다.
    나는 아직도 많은 다른 생각이 있으니 네가 좋아하길 바란다.망설이지 말고 이 부분으로 구축된 다른 것들을 공유해라. 가능성은 무궁하다.
    만약 당신에게 어떤 문제나 의견이 있다면.댓글이나 위에서 알려주세요.
    즐거움 코드.

    좋은 웹페이지 즐겨찾기