需求
当数字尾巴的甩甩尾巴有指定物品发布时,通知我!
实现
- 甩甩尾巴首页:http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=1,page 参数是页码,可以同时抓取2-3页,以免时间间隔过大发布的物品太多导致爬不到.
- 抓取每个物品的标题,url,地址,价格,时间,是否交易完成,提取这几个属性,使用 xpath 或者 css selector,在 w3c 上都有相关教程,推荐两个 chrome 插件,可以检查表达式的结果,CSS Selector Tester,XPath Helper
- 提取数据,通过 chrome 开发者工具,可以粗略提取下,然后自己修改下表达式,基本就可以了,通过上面的插件测试下,基本就差不多了. image.png image.png
- 贴上我写好的配置文件,新建一个 Website Agent 导入就可以了. - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36- { 
 "expected_update_period_in_days": "2",
 "url": [
 "http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=1",
 "http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=2",
 "http://trade.dgtle.com/dgtle_module.php?mod=trade&ac=index&typeid=&PName=&searchsort=0&page=3"
 ],
 "type": "html",
 "mode": "on_change",
 "extract": {
 "title": {
 "css": "div.tradetop > p.tradetitle > a",
 "value": "string(.)"
 },
 "info": {
 "xpath": "//*[@id=\"wp\"]/div[3]/div/p[1]/.",
 "value": "normalize-space(.)"
 },
 "state": {
 "css": "div.tradepic",
 "value": "not(contains(@class,'comp'))"
 },
 "date": {
 "css": ".tradedateline",
 "value": "string(.)"
 },
 "img": {
 "css": ".tradepic > a > img",
 "value": "@src"
 },
 "url": {
 "css": ".tradepic > a",
 "value": "concat('http://trade.dgtle.com',@href)"
 }
 }
 }
- 过滤指定物品,需要创建一个 - Trigger Agent,过滤出- 小米相关物品,只要标题包含这个关键字就可以了,代码:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- { 
 "expected_receive_period_in_days": "2",
 "keep_event": "true",
 "rules": [
 {
 "type": "regex",
 "value": "小米",
 "path": "title"
 }
 ],
 "message": "甩甩尾巴有关 `小米` 的物品更新了"
 }
- 将 event 通知到 Slack, 也可以邮件或者其他.