gpt4 book ai didi

javascript - 仅在检测到更改时才进行抓取?

转载 作者:行者123 更新时间:2023-12-02 16:29:22 24 4
gpt4 key购买 nike

我的银行有一个非常简单的登录系统。使用 casperjs 我已经能够提取我的最新帐户余额和我的最后一笔交易。从互联网上抓取数据的方法有很多,我只是使用 Casperjs 来测试它的功能。我向银行核实过,他们说 - 只要是我的银行帐户,就没有问题。

这是我必须处理的技术问题:银行将登录数量限制为每天约 40 次。如果登录次数超过该值。它会将我的帐户锁定 6 小时。 (此外,系统每 20 分钟将我注销一次 - 与操作无关)

我想要弄清楚的是:有没有办法仅在发生交易并且帐户余额发生变化时才运行抓取功能?

为了简单起见,抓取通常会及时完成。我可以实现什么推送通知样式的抓取机制?

目标是每次发生交易时都会收到一条消息/电子邮件(最多 3-4 分钟的延迟),同时不会被系统锁定。

任何有创意的答案都可以。

最佳答案

在没有登录的情况下,您如何知道交易已经发生?如果网上银行网站编程良好,您将必须登录。

小算术:

  • 每 24 小时约 40 次登录
  • 20 分钟后退出
  • 每 24 小时/39 至 37 分钟登录一次,而不存在被锁定的风险
  • 这意味着您最多有 17 分钟的延迟(在没有新信息的情况下,这实在是太多了:))

你显然24小时都没有醒。

  • 每 16 小时约 40 次登录
  • 20 分钟后退出
  • 每 16 小时/39 ~ 24.6 分钟登录一次,而不存在被锁定的风险
  • 这意味着您最多有 5 分钟的延迟(这似乎可以接受)

与您的银行联系,了解他们是否提供 API。如果您的帐户被锁定,他们可能会怀疑您的事件并永久锁定您的帐户。

由于 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();

关于javascript - 仅在检测到更改时才进行抓取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com