価格モニタリングスラックボットを造る方法🤑


私は、ちょうど新しいスイッチを得ました.そして、私は本当に新しいPaper Mario ゲーム.を除いて、私はタイトルの完全なポップを支払うことに熱心ではない.そう.私はそれが販売しているかどうか私に話すために価格の監視スラックボットを構築!あなたも1つを構築する方法があります
まず、インストールgazpacho , hickory , and slackclient :
pip install gazpacho hickory slackclient
識別するpage あなたはscrapeしたい:

テキストエディタを開きますAtom ), Pythonファイルを作成するmario.py インポートガスパパチョ
from gazpacho import get, Soup
HTMLをダウンロードしてくださいget 機能して、それをものにしますSoup ラッパー
url = "https://www.bestbuy.ca/en-ca/product/paper-mario-the-origami-king-switch/14643866"
html = get(url)
soup = Soup(html)
それを右クリックして「検査」要素を開くことによって、その価格がどのようにページに表示されるかを把握してください.

特定のタグと要素属性に注意してください.

この場合、ページのHTMLの関連ブロックは以下の通りです.
<div class="price_FHDfG large_3aP7Z " aria-hidden="true">
  $79
  <span class="rightEndPrice_6y_hS">99</span>
</div>
使用するfind 部分マッチング方式strict=False ) 価格を抽出し、floatとしてフォーマットできるようになりました.
price = soup.find("div", {"class": "price"}, strict=False)
lhs = price.text
rhs = price.find("span", {'class': 'rightEndPrice'}).text
price = float(f"{lhs}.{rhs}".replace('$', ""))
もタイトルを取得します.
title = soup.find('h1', {'class': 'productName'}).text
すべてが動作していることを確認するために両方を出力します.
print(title, price)
# Paper Mario: The Origami King (Switch) 79.99
スクリプト全体は次のようになります.
# mario.py
from gazpacho import get, Soup

url = "https://www.bestbuy.ca/en-ca/product/paper-mario-the-origami-king-switch/14643866"
html = get(url)
soup = Soup(html)

title = soup.find('h1', {'class': 'productName'}).text
price = soup.find("div", {"class": "price"})
lhs = price.text
rhs = price.find("span", {'class': 'rightEndPrice'}).text
price = float(f"{lhs}.{rhs}".replace('$', ""))

print(title, price)
このスクレーパーをスケジュールしてスラックボットに変えるにはhttps://api.slack.com/apps をクリックします.

OAuth & Permissionsを検索してクリックします

チャットの検索:パブリック.スコープを書き込み、追加する

スクロールして、ページの上部にスクロールし、スラックのワークスペースにアプリケーションをインストールします

生成されたトークンをmario.py ファイルを文字列で返します

token = "xoxb-00000000-0000000000-00000000000"
スラックをインポートし、インスタンスをインスタンス化するWebClient :
from slack import WebClient
client = WebClient(token=token)
スラックチャネルにメッセージを送るchat_postMessage メソッド:

client.chat_postMessage(channel="mario", text=f"{price} - {title}")
リファクションのすべてのように見えるように:
# mario.py

from gazpacho import get, Soup
from slack import WebClient

token = "xoxb-00000000-00000000-000000000000000"
client = WebClient(token=token)

url = "https://www.bestbuy.ca/en-ca/product/paper-mario-the-origami-king-switch/14643866"
html = get(url)
soup = Soup(html)

title = soup.find('h1', {'class': 'productName'}).text
price = soup.find("div", {"class": "price"})
lhs = price.text
rhs = price.find("span", {'class': 'rightEndPrice'}).text
price = float(f"{lhs}.{rhs}".replace('$', ""))

client.chat_postMessage(channel="mario", text=f"${price} - {title}")
あなたは本当にあなたのトークンをプレーンテキストとして公開してはいけません.

コマンドラインでスクリプトを実行して動作を確認します.
python mario.py
ヒッコリーで30秒ごとにこのスクリプトをスケジューリングするのは簡単です.ジャスト・ユースhickory schedule コマンド行で
hickory schedule mario.py --every=30s
スケジュールの実行状況を確認するには、次の手順に従います.
hickory status
# ID      FILE         STATE    RUNS  INTERVAL
# ea6b74  mario.py     waiting  0     30
そして、スケジュールを殺す
hickory kill mario.py
この価格監視スラックボットのスケジューリングは、毎日9 : 00 amで実行します.
hickory schedule mario.py --every=@9:00am
そして、それ!🤑
あなたは何かクールで構築した場合gazpacho //hickory 連絡を取る、私はそれについて聞いてみたい!