Web scraping 从URL触发按钮单击
我们需要每周勉强计算一次总数 例如,对于2016年10月17日至2016年10月23日这一周,当单击搜索按钮时,返回的数字为167356。我们希望这个号码存储在我们的数据库中 我使用coldfusion将每周日期生成为参数,并像上面那样传递它们。但我找不到查询参数,因此触发了“搜索”按钮单击事件 我试过了,但似乎什么都没用Web scraping 从URL触发按钮单击,web-scraping,coldfusion,coldfusion-9,Web Scraping,Coldfusion,Coldfusion 9,我们需要每周勉强计算一次总数 例如,对于2016年10月17日至2016年10月23日这一周,当单击搜索按钮时,返回的数字为167356。我们希望这个号码存储在我们的数据库中 我使用coldfusion将每周日期生成为参数,并像上面那样传递它们。但我找不到查询参数,因此触发了“搜索”按钮单击事件 我试过了,但似乎什么都没用 有任何指针吗?似乎每次提交表单都会添加一个CRSF令牌,以防止恶意活动。更糟糕的是,CRSF令牌在每次表单提交时都会发生更改,而不仅仅是针对每个用户,这几乎不可能避免 当我向
有任何指针吗?似乎每次提交表单都会添加一个CRSF令牌,以防止恶意活动。更糟糕的是,CRSF令牌在每次表单提交时都会发生更改,而不仅仅是针对每个用户,这几乎不可能避免 当我向该表单发出CFHTTP POST请求时,我会返回HTML文件内容,但结果表单元格占位符中没有DB数据。在我看来,表单所有者允许从HTTP请求提交表单,但如果无法验证CRSF令牌,则不会返回任何DB数据
也许值得问问网站所有者,如果有任何类型的REST API,您可以连接到…如果您想使用无头浏览器PhantomJS()来实现这一点,下面是一个脚本,它将把总数保存到一个文本文件中 在命令提示下,安装PhantomJS后,运行
PhantomJS.exe main.js
main.js
这个脚本并不完美,如果你感兴趣的话,你可以使用它,但它将把总数保存到一个文件
veet.txt
,并且还保存一个截图veet.png
,你能给出详细信息吗,你用什么样的jar来刮取HTML?如jSoup、DocumentBuilder等。。您能给出一些示例代码吗?您需要使用CFHTTP method=“post”。只需使用Firebug获取URL并将表单字段复制到cfhttpparam type=“Formfield”@SaravanaKumar:我本来会使用Jsoup,但现在我正在努力从URL获取所需的html。感谢您的关注。RESTAPI一直是我们想要的获取数据的方式,但网站没有API,因此试图获取数据。谢谢,我会尝试一下。
"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);