본문 바로가기

카테고리 없음

온라인에서 가격을 자동으로 모니터링하는 Python 스크립트를 만드는 방법

반응형

온라인에서 가격을 자동으로 모니터링하는 Python 스크립트를 만드는 방법

 

 

나만의 웹 스크레이퍼 설정, 과거 가격 데이터베이스 생성, 이메일 알림 시스템, 이 모든 것이 지속적으로 자동 실행되도록 설정하는 방법에 대한 가이드입니다.

 

Unsplash에 있는 Engina Kyurt의 사진

현대 세계는 항상 사물의 가격을 변경하는 가격 책정 알고리즘으로 가득 차 있습니다. 이러한 가격을 모니터링하는 도구를 구축하면 한 발 앞서서 큰 구매에 대해 정보에 입각한 결정을 내리는 데 자신감을 가질 수 있습니다. 또한 여기에서 만들 조각은 모든 종류의 다른 프로젝트에서도 사용할 수 있도록 조정할 수 있습니다. 시작하자.

제 경우에는 Overcast(다른 팟캐스트의 배너 광고를 판매하여 청중을 늘리는 팟캐스트 앱)의 팟캐스트 광고 가격을 주시하고 싶습니다. 해당 페이지의 상단은 다음과 같습니다.

오버캐스트의 광고 페이지

중요한 것은 구매한 광고와 판매되지 않은 광고의 수에 따라 GMT 자정에 매일 가격을 업데이트한다는 것입니다. SF 작가들과 이야기하고 책을 리뷰하는 팟캐스트 광고(The Hugonauts)를 살 수 있을지 모르겠지만, 구매한다면 확실히 저렴하게 구매하고 싶습니다!

좋은 내용인 코드에 대해 알아보겠습니다. 먼저 프로그램을 빌드하는 데 필요한 모든 코드를 살펴본 다음 마지막에 지속적으로 실행되도록 모든 코드를 자동화하는 방법을 살펴보겠습니다.

이러한 라이브러리가 없는 경우 계속 진행하기 전에 라이브러리를 설치해야 합니다.

일반적으로 아래 코드 블록은 세 가지 작업을 수행합니다.

  1. 요청을 사용하여 대상 웹사이트에서 HTML을 스크랩합니다.
  2. Beautiful Soup을 사용하여 테이블에서 열 머리글과 데이터 행을 가져옵니다.
  3. 헤더와 데이터 행을 파이썬 사전으로 결합합니다(그리고 데이터를 스크랩한 시간에 대한 타임스탬프 추가).

모든 웹사이트의 HTML이 다르기 때문에 위의 코드는 이 프로그램에서 가장 일반화할 수 없는 부분이 될 것입니다(흐린 데이터도 스크랩하려는 경우 제외). 그러나 사용된 모든 도구와 방법은 모든 웹 사이트에서 작동하며 관심 있는 웹 사이트에도 테이블이 있는 경우 변경 사항이 많지 않습니다.

내 컴퓨터에 설정한 Microsoft SQL 로컬 DB를 사용하지만 다른 DB, SQLite를 사용하거나 로컬 csv에 계속 추가하여 일종의 데이터베이스로 사용할 수 있습니다(사용 중인 CSV 방법 참조 이전 게시물은 여기).

sqlalchemy의 엔진 매개변수는 SQL 서버 설정과 일치하도록 업데이트해야 합니다. 특정 SQL 서버 유형과 'sqlalchemy 엔진'을 Google에서 검색하여 특정 서버에 대한 좋은 예를 찾으십시오.

모든 가격 책정 데이터를 가지고 있는 것은 좋지만 사용하지 않으면 더 나은 결정을 내리는 데 실제로 도움이 되지 않습니다. 따라서 우리는 또한 광고를 사고 싶어할 수 있는 세 가지 잠재적 범주(예술, 소설 및 과학)에 대해 세 가지 정보를 보여주는 이메일을 매일 자동으로 보낼 것입니다.

  1. 최근 9일 동안의 가격과 함께 오늘의 가격
  2. 역대 최저가
  3. 평균 가격

다음은 이를 수행하는 코드입니다. 세 가지 다른 범주에 대해 동일한 작업을 수행하기 때문에 먼저 함수를 정의한 다음 세 가지 범주 각각에 대해 함수를 사용하여 이메일을 구성합니다. 우리는 사용하고 있습니다 email.MIME 이메일 본문을 구성하는 라이브러리.

이메일이 받은 편지함에 도착했을 때의 이메일 본문은 다음과 같습니다(이 글을 쓰는 시점에서 스크립트가 3일 동안만 실행되었기 때문에 3일 분량의 데이터만 표시).

우리가 만든 자동화된 이메일의 본문

Google은 SMTP가 Gmail을 통해 이메일을 보내는 것을 허용하지 않도록 설정했습니다. 5/30/2022 . 이 문제를 해결하기 위해 Hotmail 계정을 '보낸사람' 이메일로 설정했으며 이러한 목적에 적합합니다.

Hotmail 또는 Outlook 이메일 주소를 사용하는 경우 이메일 사용자 이름과 비밀번호를 추가한 후 바로 아래 코드가 작동합니다. 다른 이메일 제공업체를 사용하려면 이메일 제공업체의 SMTP 설정을 찾아 첫 번째 이메일 제공업체에 필요한 URL과 포트를 찾으십시오. smtplib 아래 코드 줄.

예외 분기 끝에 있는 input('Enter any key to quit') 행에 주목하십시오. 이렇게 하면 생성된 오류 메시지를 볼 수 있도록 자동화를 설정한 후 이메일이 전송되지 않는 경우 프로그램 창이 계속 열려 있고 응답을 기다립니다.

저는 Windows를 사용하고 있으므로 아래 단계는 Windows에만 해당됩니다. Mac 사용자의 경우 흐름이 약간 다를 것입니다. .py 파일을 얻은 후에는 Crontab을 사용하여 작업 일정을 설정합니다. 다음은 Windows의 세 단계입니다.

  1. 에 코드를 저장하십시오. .py 파일
  2. 컴퓨터가 파이썬 환경을 열고 .py 스크립트를 실행하도록 지시하는 .bat 파일을 만듭니다.
  3. 컴퓨터의 작업 스케줄러를 사용하여 선택한 일정에 따라 .bat 파일을 실행합니다.

괜찮아…

1단계 - 만들기 .py 파일.

만들기 위해 .py, 작업 코드(예: 위의 모든 코드 블록)를 가져와서 텍스트 편집기 파일에 붙여넣기만 하면 됩니다. 그런 다음 파일을 다음과 같이 저장하십시오. yourfilename.py.

파일을 저장한 위치를 기록해 둡니다. 터미널에서 .py 파일이 저장된 디렉토리로 이동하고 아래 코드를 실행하여 테스트할 수 있습니다.

그것이 작동하고 스크립트를 실행한다면 지금까지는 너무 좋습니다!

python your_file_name.py

2단계 - .bat 파일

이 단계를 건너뛰고 작업 스케줄러를 .py 파일 및 python.exe. 그거 하지마!

대다수의 Python 사용자의 경우 코드가 기본 Python 설치를 사용하여 작성되지 않았기 때문에 코드가 실행되지 않습니다. 코드는 Conda(또는 Anaconda) 위에 작성되었거나 여러 새 라이브러리에서 pip's했습니다. 또는 라이브러리를 처리하기 위해 가상 환경을 실행 중입니다. 지시 없이는 컴퓨터가 적절하게 처리할 수 없습니다. 이것이 바로 .bat 파일의 용도입니다.

Windows 작업 스케줄러가 .py 파일을 실행하지 않는 경우 다음 작업을 수행해야 합니다. 깨끗한 새 파일에 대한 텍스트 편집기를 열고 다음 코드를 삽입합니다.

@echo off
call C:\Users\brent\miniconda3\condabin\activate.bat
cd “D:\Brents_Files\Documents\Python\Monitoring_Overcast_ad_pricing”
python overcast_price_monitor.py

호출 회선은 파일을 여는 데 사용할 환경을 컴퓨터에 알려줍니다. 제 경우에는 Conda를 사용하지만 (아직) 가상 환경은 사용하지 않습니다. 그래서 Conda를 활성화하는 .bat 파일을 가리킵니다.

그만큼 cd 행은 .py 파일을 저장한 디렉토리를 가리켜야 하고 파이썬을 호출하는 마지막 행도 선택한 파일 이름으로 업데이트해야 합니다.

.bat로 끝나는 이 텍스트 파일을 저장하면 거의 완료됩니다! 파일을 테스트하려면 .bat 파일을 끝까지 실행해야 합니다!

실패하면 더 진행하기 전에 디버그해야 합니다. 참고로 파일을 두 번 클릭하면 텍스트 편집기에서 열립니다. 파일이 작동하지 않는다는 의미는 아닙니다. 단지 컴퓨터에서 열도록 지시했다는 의미일 뿐입니다. .bat 파일을 실행하는 대신 텍스트 편집기에서 당신은 당신의 .bat 대신 테스트하려면 터미널에서 파일을 가져옵니다.

저는 Windows를 사용 중이므로 작업 스케줄러를 사용하겠습니다. Mac 사용자의 경우 대신 Crontab을 사용합니다.

시작 버튼을 클릭하고 '작업 스케줄러'를 검색합니다.

Windows 작업 스케줄러를 여는 방법

이제 오른쪽 창에서 'Create Task...'를 누르십시오.

Windows 작업 스케줄러 작업 만들기

작업 이름을 지정하고 자신에 대한 설명을 작성하십시오. 그리고 가장 중요한 것은 '가장 높은 권한으로 실행' 상자를 체크하는 것입니다! 이러한 단계를 완료하면 트리거 탭으로 이동합니다.

Windows 작업 스케줄러 스크린샷 및 지침

트리거 탭에서 '새로 만들기'를 누르고 작업을 실행할 시기와 빈도에 대한 매개변수를 설정합니다.

상당히 자명하기 때문에 트리거 페이지의 스크린샷이 없습니다. 다음으로 '작업' 탭을 누르십시오.

Windows 작업 스케줄러 작업 탭 지침

'작업' 탭에서 '새로 만들기'를 누르십시오. 표시되는 팝업에서 '프로그램/스크립트' 필드에 만든 .bat 파일의 전체 경로(파일 이름 포함)를 입력하거나 찾아보기를 누르고 .bat 파일로 이동한 다음 확인을 누릅니다.

그런 다음 '시작 위치(선택 사항)' 필드에 .bat 파일이 있는 폴더의 경로를 입력합니다. 나는 그것이 중복되는 것처럼 보이지만 Windows에는 둘 다 필요한 것 같습니다.

그게 다야! 다시는 온라인 구매에 너무 많은 비용을 지불하지 마십시오.

여러분 즐거운 코딩하세요.

반응형