ИЧР: Проверьте статус "в наличии" элемента на веб-сайте в bash?

У меня чертовски много времени ловит товар на складе на сайте. Я продолжаю скучать по нему примерно на полчаса или около того.

Как я могу вытащить содержимое страницы магазина Nikon ( http://shop.nikonusa.com/store/nikonusa/en_US/pd/productID.249538300) и отправить по электронной почте уведомление (address@gmail.com), когда серый кнопка "где купить" была заменена желтой кнопкой "купить сейчас" (ее можно увидеть здесь: http://shop.nikonusa.com/store/nikonusa/en_US/pd/productID.226487200). Это возможно из скрипта bash или слишком сложно?

Спасибо!

2 ответа

Решение

Вы можете использовать curl для захвата веб-страницы, а затем grep для поиска альтернативного текста кнопки...

#!/bin/bash
#D800
x=$( curl -s http://shop.nikonusa.com/store/nikonusa/en_US/pd/productID.249538300 | grep 'alt="Buy Now"')
#D7000 (for testing)
#x=$( curl -s http://shop.nikonusa.com/store/nikonusa/en_US/pd/productID.226487200 | grep 'alt="Buy Now"')
if [ ! -n "$x" ]
then
    echo Not Available
    exit 1
fi
echo "Get clicking" | mail -s "D800 Available" you@example.com

Я закончил тем, что унизил что-то вместе с wget.

Если кто-то сталкивается с той же проблемой, полусанизированный код ниже:

#!/bin/bash
while [ ! -f mailready ]
do
sleep 450
echo -e "\n Trying wget [URLHERE]"
wget -N [URLHERE]
        if grep -q buy-now [Downloaded URLfile]
        then
                echo -e "\n Buy now button found at [URL, DATE]\" > scriptbuffer
                cat mailheader scriptbuffer > mailready
                cat mailready| msmtp RECIPIENT@gmail.com
                echo -e "\nBuy-now button found... ending"
        else
                echo -e "\nNo Buy-now button found"
        fi
done

Это работало невероятно хорошо для меня, не зная, что, черт возьми, я делал. Я настроил его на проверку каждые 7 минут, и через два или три часа я смог разместить свой заказ.

Другие вопросы по тегам