LoginSignup
8
7

More than 5 years have passed since last update.

goqueryでSwitchの在庫状況を監視した話

Last updated at Posted at 2017-05-08

こんにちはT2です

Switchが全然売っていません(4/30現在)
どうやら毎週少しずつですが出荷はされている模様なんですが
それをいちいち見に行くのは面倒です。

ということでgoでamazonをスクレイピングするというのを試してみました。

まずAmazonでものが販売されているとはどういうことなのかを調べます
潤沢に在庫のあるゼルダのページを見ると

スクリーンショット 2017-05-08 15.10.15.png

上記のように表示されています。

Switchはというと、Amazonではなくマーケットプレイスの店名が入っています

この商品は、ホニャホニャStoreが販売し、Amazon.co.jp が発送します。 

ゼルダに立ち返って問題の箇所を確認するとid = merchant-infoにAmazon販売発送の旨が書いてあれば間違いなさそうです。
スクリーンショット 2017-05-08 15.10.38.png

checkSwitch.go
package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "strings"
)

const (
    //Swith url
    URL = "https://www.amazon.co.jp/Nintendo-Switch-Joy-Con-%E3%83%8D%E3%82%AA%E3%83%B3%E3%83%96%E3%83%AB%E3%83%BC-%E3%83%8D%E3%82%AA%E3%83%B3%E3%83%AC%E3%83%83%E3%83%89/dp/B01NCXFWIZ"
    //キーワード
    KEYWORD = "この商品は、Amazon.co.jp が販売、発送します。"
)

//ページのチェック
func CheckPage(url string) {
    doc, _ := goquery.NewDocument(url)
    t := doc.Find("#merchant-info").Text()
    if strings.Contains(t, KEYWORD) {
        fmt.Println("Switch売ってるよ!!!")
        PostSlack()
    } else {
        fmt.Println("Switch売ってない!!!")
    }
}

func main() {
    CheckPage(URL)
}

全文を引っ張ってきて

doc, _ := goquery.NewDocument(url)

該当IDを選択して

t := doc.Find("#merchant-info").Text()

そのTextにキーワードが含まれていれば売っている

if strings.Contains(t, KEYWORD)

うーんとっても簡単
なおまだSwitchは入手できていません(´;ω;`)

8
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7