Web scraping 从URL触发按钮单击

Web scraping 从URL触发按钮单击,web-scraping,coldfusion,coldfusion-9,Web Scraping,Coldfusion,Coldfusion 9,我们需要每周勉强计算一次总数 例如,对于2016年10月17日至2016年10月23日这一周,当单击搜索按钮时,返回的数字为167356。我们希望这个号码存储在我们的数据库中 我使用coldfusion将每周日期生成为参数,并像上面那样传递它们。但我找不到查询参数,因此触发了“搜索”按钮单击事件 我试过了,但似乎什么都没用 有任何指针吗?似乎每次提交表单都会添加一个CRSF令牌,以防止恶意活动。更糟糕的是,CRSF令牌在每次表单提交时都会发生更改,而不仅仅是针对每个用户,这几乎不可能避免 当我向

我们需要每周勉强计算一次总数

例如,对于2016年10月17日至2016年10月23日这一周,当单击搜索按钮时,返回的数字为167356。我们希望这个号码存储在我们的数据库中

我使用coldfusion将每周日期生成为参数,并像上面那样传递它们。但我找不到查询参数,因此触发了“搜索”按钮单击事件

我试过了,但似乎什么都没用


有任何指针吗?

似乎每次提交表单都会添加一个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);