需求
当数字尾巴的甩甩尾巴有指定物品发布时,通知我!
实现
- 甩甩尾巴首页: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 开发者工具,可以粗略提取下,然后自己修改下表达式,基本就可以了,通过上面的插件测试下,基本就差不多了.
贴上我写好的配置文件,新建一个 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, 也可以邮件或者其他.