2019 年 8 月 12 日
今天我听说我错过的一款皮革电动躺椅摇椅旋转椅半价出售!
我决定编写一个 YAD / Bash / wget 应用程序来每天cron
下载html
文件并比较价格:
- 当价格变动时
cron
会给我发送电子邮件。 - 如果找不到价格(供应商更改了网站格式),cron 将通过电子邮件向我发送一条错误消息。
- 如果供应商更改了产品编号,或者找不到,cron 也会给我发送电子邮件。
完成后我会发布答案。Google 稍后会窃取它 :)
2017 年 9 月 24 日留下的文章,供历史参考
我需要在某款笔记本电脑促销时购买。
这款游戏笔记本电脑是我经过一周的成本/收益分析后发现的最好的。我在 Kijjii 上搜索后决定购买新的,那里有二手笔记本电脑好得令人难以置信,但接受 Paypal拒绝回答简单的问题。
传统方法是“购物机器人”没有给出可接受的结果:
亚马逊的价格为 2114 美元,NewEgg 的价格为 2099 美元,与所有本地零售商的价格相同。然后它列出了四个特定的网站,但没有一个是可以接受的。
我发现这些零售商以 2099.99 美元的价格销售同一款笔记本电脑:史泰博,伦敦毒品,CDW 加拿大(确实便宜了 15 美元,但不是本地的)新蛋网(不是本地的,但是很有名),加拿大电脑公司,大和玩具(实际上要多花 30 美元,但现在打折后可省 120 美元,有效期至 2017 年 9 月 15 日)BestBuy.ca(实际上要多花 50 美元,但以出色的自发销售而闻名)老虎直销网(实际上便宜了 150 美元,但不是本地的,也不太出名)记忆快车(实际上要多花 200 美元,但我喜欢这家公司,而且他们有像索尼低音炮 75% 折扣这样的超值优惠)而且可能还有更多我还没找到的产品。
我不想支付 2100 美元,我想有一天有人会以 1400 美元的价格出售它,但它会在一周内售罄。可能是圣诞节当天,也可能是更早或更晚,但它会发生,而我是那种可以打持久战的人。
我怎样才能cron
每天查看这些链接、搜索$
标志并在价格与前一天发生变化时通过电子邮件通知我?
我没有时间每天检查 10 多个网站来查看价格。而且我实际上没有这样做的智慧或毅力。看看我花了 3 个月才更新这个问题!
如果没有任何现成的开源解决方案,我可能会自己用 bash 编写。(向所有 Python 爱好者致歉)。
2017 年 6 月 27 日的原始帖子仅供历史参考
去年我买了一张宜家 ARKELSTORP 咖啡桌,现在想买一张配套的控制台桌。昨天我遗憾地发现这条产品线已经停产,埃德蒙顿只有四张桌子,而我并不需要。我去 kijijii 才发现有人在 6 月 2 日卖一张二手控制台桌,我错过了。
有没有办法cron
每天调用 google 搜索并保存第一页返回的结果?
我做了一些家庭作业,发现了这个“穷人的克朗”但是它使用谷歌脚本应用程序并且对于我的需求来说过于复杂。
我设想手动进行一次搜索并保存第一页结果。从那时起,cron
可以每天运行搜索,如果发现新结果,会给我发送电子邮件。cron
将diff
结果与我保存的基准结果进行比较,如果结果不同,会给我发送电子邮件。
因为我可能会搜索多个东西,所以我会设置一个 bash 数组(使用yad
),其中包含搜索字符串、基线手动搜索结果文件名和用于cron
更新搜索次数的计数器。
关于该项目给定部分的任何和所有部分答案都愉快地获得了赞成票。
对于那些提出解决方案的人,C
我很遗憾地说,我才刚刚开始用命令来理解它statx
,只能编译完整的代码,而不能根据我的需要“调整”。因此,对于像我这样的 Linux 新手来说,shell / bash 代码是最好的。
答案1
您可以使用它wget
来获取带有搜索结果的网页。这不适用于谷歌(他们坚持填写他们的搜索框),但适用于必应。因此,类似这样的内容可以作为起点:
wget "http://www.bing.com/search?q=ikea+arkelstorp&go=Submit+Query&qs=ds&form=QBLH" -O /tmp/IKEA_ARKELSTORP.html
这会将搜索结果保存在文件中/tmp/IKEA_ARKELSTORP.html
,然后您可以从那里继续。我不确定这对您有多大用处,结果相当依赖 javascript。
限制自己使用 shell 脚本是一个相当严格的限制。如果你愿意学习一点 Python,可以看看这个简单的介绍到机械化。它是专门为进行网页抓取而设计的,可以让您的生活变得更加轻松。
答案2
您可以找到仅搜索最后一天的结果: google.com 或下载您的查询:
curl -sA "Chrome" -L 'https://www.google.com/search?q=IKEA+ARKELSTORP' -o search.html
然后进行差异和电子邮件。但您需要认为这个结果将改变位置并且将输出并非所有输出。