仅在检测到更改时才进行抓取?
Scraping only when a change is detected?
我的银行有一个非常简单的登录系统。使用 casperjs 我已经能够提取我最新的账户余额和我的最后一笔交易。有很多方法可以从 Internet 上抓取数据,我只是用 Casperjs 测试了它 capabilities.I 与银行核实,他们说-只要是我的银行账户,就没问题。
这是我必须处理的技术问题:银行将登录次数限制为每天约 40 次。如果登录次数超过该数量。它会将我锁定在我的帐户之外 6 个小时。 (此外,系统每 20 分钟将我注销一次 - 与操作无关)
我想弄清楚的是:
如果发生交易并且账户余额发生变化,有没有办法只运行抓取功能?
为简单起见,抓取通常会及时进行。我可以实现什么是推送通知样式的抓取机制?
objective 是在每次交易发生时(最多延迟 3-4 分钟)获得 message/email,同时不会被系统锁定。
任何有创意的答案都可以。
不登录怎么知道交易发生了?如果网上银行网站编程良好,您将需要登录。
小算术:
- ~ 每 24 小时 40 次登录
- 20 分钟后注销
- 每 24 小时/39 ~ 37 分钟登录一次,不会有被锁定的风险
- 这意味着您最多延迟 17 分钟(如果没有新信息,这太过分了 :) )
你显然24小时都没有醒。
- ~ 每 16 小时 40 次登录
- 20 分钟后注销
- 每 16 小时/39 ~ 24.6 分钟登录一次,不会有被锁定的风险
- 这意味着您最多延迟 5 分钟(这似乎可以接受)
与您的银行联系,看他们是否提供 API。如果您的帐户被锁定,他们可能会怀疑您 activity 并永久锁定您的帐户。
由于 CasperJS 是异步的,您将不得不递归地使用您的抓取功能。
var casper = require("casper").create(),
url = "your bank url",
counter = 0;
function login(){
counter++;
this.thenOpen(url, function(){
this.fillSelectors("login form selector", {
"username selector": "username",
"password selector": "password",
// more if necessary
}, true); // automatically submit
});
}
function scrape(){
// do your thing
}
function run(){
if (counter == 39) {
counter = 0;
this.wait(8 * 60 * 60 * 1000)
.then(run);
} else if (this.exists("selector which shows that you are logged in")) {
this.then(scrape)
.wait(30 * 1000)
.then(run);
} else if (this.exists("selector which shows that you where automatically logged out")) {
this.wait(5 * 60 * 1000)
.then(login)
.then(run);
} else {
this.then(login)
.then(run);
}
}
casper.start().then(run).run();
我的银行有一个非常简单的登录系统。使用 casperjs 我已经能够提取我最新的账户余额和我的最后一笔交易。有很多方法可以从 Internet 上抓取数据,我只是用 Casperjs 测试了它 capabilities.I 与银行核实,他们说-只要是我的银行账户,就没问题。
这是我必须处理的技术问题:银行将登录次数限制为每天约 40 次。如果登录次数超过该数量。它会将我锁定在我的帐户之外 6 个小时。 (此外,系统每 20 分钟将我注销一次 - 与操作无关)
我想弄清楚的是: 如果发生交易并且账户余额发生变化,有没有办法只运行抓取功能?
为简单起见,抓取通常会及时进行。我可以实现什么是推送通知样式的抓取机制?
objective 是在每次交易发生时(最多延迟 3-4 分钟)获得 message/email,同时不会被系统锁定。
任何有创意的答案都可以。
不登录怎么知道交易发生了?如果网上银行网站编程良好,您将需要登录。
小算术:
- ~ 每 24 小时 40 次登录
- 20 分钟后注销
- 每 24 小时/39 ~ 37 分钟登录一次,不会有被锁定的风险
- 这意味着您最多延迟 17 分钟(如果没有新信息,这太过分了 :) )
你显然24小时都没有醒。
- ~ 每 16 小时 40 次登录
- 20 分钟后注销
- 每 16 小时/39 ~ 24.6 分钟登录一次,不会有被锁定的风险
- 这意味着您最多延迟 5 分钟(这似乎可以接受)
与您的银行联系,看他们是否提供 API。如果您的帐户被锁定,他们可能会怀疑您 activity 并永久锁定您的帐户。
由于 CasperJS 是异步的,您将不得不递归地使用您的抓取功能。
var casper = require("casper").create(),
url = "your bank url",
counter = 0;
function login(){
counter++;
this.thenOpen(url, function(){
this.fillSelectors("login form selector", {
"username selector": "username",
"password selector": "password",
// more if necessary
}, true); // automatically submit
});
}
function scrape(){
// do your thing
}
function run(){
if (counter == 39) {
counter = 0;
this.wait(8 * 60 * 60 * 1000)
.then(run);
} else if (this.exists("selector which shows that you are logged in")) {
this.then(scrape)
.wait(30 * 1000)
.then(run);
} else if (this.exists("selector which shows that you where automatically logged out")) {
this.wait(5 * 60 * 1000)
.then(login)
.then(run);
} else {
this.then(login)
.then(run);
}
}
casper.start().then(run).run();