ИЧР: Проверьте статус "в наличии" элемента на веб-сайте в 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 минут, и через два или три часа я смог разместить свой заказ.