Pythonを使用したAmazon製品の可用性の確認

| | | | | |

ご存知のように、Pythonはスクリプトに広く使用されている多目的言語です。その使用は、複雑な計算を解決するだけでなく、日常のタスクを自動化することにも限定されません。たとえば、Amazon製品の在庫状況を追跡し、商品の在庫状況が変更されたときに取引を成立させ、ユーザーに電子メールで在庫状況を通知するとします。このためのPythonスクリプトを書くのはとても楽しいでしょう。ノート。スクリプトを実行する前に、必要なライブラリを(コードに従って)インストールします。また、製品が現在利用できない場合、ユーザーに電子メールは送信されないことに注意してください。 Asin IDは、ユーザーが追跡する製品に対して提供する必要があります。

使用される各モジュールの動作:
  • ->リクエスト:HTTPの取得と投稿に使用されますリクエスト
  • ->時間:現在の時間を検索し、待機し、スリープするために使用されます
  • ->スケジュール:関数が間隔を置いて再度実行されるようにスケジュールするために使用されます。 「JavaScriptのsetInterval、"機能」に似ています。
  • -> smptlib:Pythonを使用してメールを送信するために使用されます。

# Amazon製品の可用性チェッカー用のPythonスクリプト#lxmlからのライブラリのインポートインポートhtml時間からのインポート要求インポートスリープインポート時間インポートスケジュールインポートsmtplib#可用性をチェックするユーザーの電子メールIDレシーバー_email_id = "EMAIL_ID_OF_USER" def check(url):headers = {` User-Agent`:` Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML、Geckoなど)Chrome / 42.0.2311.90 Safari / 537.36`}#自分がGETリクエストを送信しているブラウザであることを示すヘッダーを追加page = requests.get(url、headers = headers)for i in range(20):#継続的なチェックが#ミリ秒または数秒で#リクエストをブロックするためsleep(3)#htmlコンテンツを解析するdoc = html.fromstring(page .content)#可用性のチェックXPATH_AVAILABILITY =`// div [@id = "availability"] // text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY)AVAILABIL ITY =`` .join(RAw_AVAILABILITY).strip()if RAw_AVAILABILITY else None return AVAILABILITY def sendemail(ans、product):GMAIL_USERNAME = "YOUR_GMAIL_ID" GMAIL_PASSWORD="YOUR_GMAIL_PASSWORD"受信者=receiver_email_idbody_of_email `#SMTPセッションを作成しますs = smtplib.SMTP(` smtp.gmail.com`、587)#セキュリティのためにTLSを開始しますs.starttls()#認証s.login(GMAIL_USERNAME、GMAIL_PASSWORD)#送信されるメッセージheaders = "" .join(["from:" + GMAIL_USERNAME、 "subject:" + email_subject、 "to:" + receive、 "mime-version:1.0"、 "content-type:text / html"])content = headers + "" + body_of_email s.sendmail(GMAIL_USERNAME、recipient、content)s.quit()def ReadAsin():#Asin Idは、ユーザーが提供する必要のある製品IDです。Asin=`B077PWK5BT` url = "http:// www.amazon.in/dp/ "+ Asin print("処理中: "+ url)ans = check(url)arr = [`在庫が1つだけ残っています。`、`在庫が2つだけ残っています。`、`在庫あり。`]print(ans)if ans in arr:#s #製品が利用可能な場合にユーザーへの電子メールを終了するsendemail(ans、Asin)#1分ごとに複数回実行するように同じコードをスケジュールするdef job():print( "Tracking ....")ReadAsin()schedule.every (1).minutes.do(job)while True:#すべての保留中のタスク/ジョブを実行しますschedule.run_pending()time.sleep(1)

出力:

追跡.. ..処理:http://www.amazon.in/dp/B077PWK5BT在庫が1つだけ残っています。追跡....処理:http://www.amazon.in/dp/B077PWK5BT在庫が1つだけ残っています。追跡....処理:http://www.amazon.in/dp/B077PWK5BT在庫が1つだけ残っています。