我们需要每周刮一次VEEC Website 来获取总数。
例如,在2016年10月17日至2016年10月23日那一周,URL返回数字总计167,356 ,当点击搜索按钮时。我们希望将此号码存储在我们的数据库中。
我正在使用ColdFusion生成每周日期作为参数,并且像上面的URL一样传递它们。但是我找不到查询参数,因此无法触发“搜索”按钮的单击事件。
有指针吗?
答案 0 :(得分:2)
似乎为每个表单提交都添加了CRSF令牌,以防止恶意活动。更糟糕的是,对于每个表单提交(不仅针对每个用户),都更改了CRSF令牌,这实际上使其无法绕开。
当我向此表单发出CFHTTP POST请求时,我获得了HTML FileContent,但是结果表单元格占位符中没有DB数据。在我看来,表单所有者允许通过HTTP请求提交表单,但是如果无法验证CRSF令牌,则不会返回任何数据库数据。
也许值得询问网站所有者,是否可以使用某种REST API,...
答案 1 :(得分:0)
如果您要为此使用无头浏览器PhantomJS(https://en.wikipedia.org/wiki/PhantomJS),请使用以下脚本将总数保存到文本文件中。
在命令提示符下,安装PhantomJS后,运行phantomjs.exe main.js
。
main.js
"use strict";
var firstLoad = true;
var url = 'https://www.veet.vic.gov.au/Public/PublicRegister/Search.aspx?CreatedFrom=17%2F10%2F2016&CreatedTo=23%2F10%2F2016';
var page = require("webpage").create();
page.viewportSize = {
width: 1280,
height: 800
};
page.onCallback = function (result) {
var fs = require('fs');
fs.write('veet.txt', result, 'w');
};
page.onLoadStarted = function () {
console.log("page.onLoadStarted, firstLoad", firstLoad);
};
page.onLoadFinished = function () {
console.log("page.onLoadFinished, firstLoad", firstLoad);
if (firstLoad) {
firstLoad = false;
page.evaluate(function () {
var event = document.createEvent("MouseEvents");
event.initEvent("click", true, true);
document.querySelectorAll(".dx-vam")[3].dispatchEvent(event);
});
} else {
page.evaluate(function () {
var element = document.querySelectorAll('.dxgv')[130];
window.callPhantom(element.textContent);
});
setTimeout(function () {
page.render('veet.png');
phantom.exit();
}, 3000);
}
};
page.open(url);
该脚本不是完美的,如果您感兴趣,可以对其进行处理,但是这样可以将总数保存到文件veet.txt
中并保存屏幕快照veet.png
。