Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP在POST后从aspnet表单获取文件内容_Javascript_Php_Html_Asp.net - Fatal编程技术网

Javascript PHP在POST后从aspnet表单获取文件内容

Javascript PHP在POST后从aspnet表单获取文件内容,javascript,php,html,asp.net,Javascript,Php,Html,Asp.net,我试图从以下网站获取信息: 正如你所看到的,这个网站列出了巴塞罗那证券交易所的公司。但它只按字母顺序列出第一页。我正在使用PHP自动从所有页面获取信息。例如,如果你点击顶部的链接,上面写着ERC-HUL,那么你将进入一个页面,该页面包含更多以字母:ERC开头的公司名称 我对APSX没有太多经验,但经过调查,我可以看到,当您单击该链接时,会触发以下JS函数: var GoPag = function (inicio) { document.forms.aspnetForm['ctl00_C

我试图从以下网站获取信息:

正如你所看到的,这个网站列出了巴塞罗那证券交易所的公司。但它只按字母顺序列出第一页。我正在使用PHP自动从所有页面获取信息。例如,如果你点击顶部的链接,上面写着
ERC-HUL
,那么你将进入一个页面,该页面包含更多以字母:ERC开头的公司名称

我对APSX没有太多经验,但经过调查,我可以看到,当您单击该链接时,会触发以下JS函数:

var GoPag = function (inicio) {
    document.forms.aspnetForm['ctl00_Contenido_GoPag'].value = inicio;
    document.forms.aspnetForm.submit();
}
这基本上只是提交带有一个隐藏输入字段的表单(
id=“ctl00\u Contenido\u GoPag”
name=“ctl00$Contenido$GoPag”
),该字段的值包含我们要显示的页码。默认值为0,
ERC-HUL
的值为3

我正在尝试获取与第3页对应的页面,我有以下PHP代码,这是我在研究了一点之后创建的:

$postdata = http_build_query(
    array(
        'ctl00$Contenido$GoPag' => '3'
    )
);

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/xhtml+xm',
        'content' => $postdata
    )
);

$context  = stream_context_create($opts);

$result = file_get_contents('http://www.borsabcn.es/esp/aspx/Empresas/Empresas.aspx', false, $context);

echo $result;
但是,这总是会返回默认页面(0)的结果,该页面列出以字母A开头的公司。似乎发布的数据没有得到正确的解释

我走对了吗?有人知道我能做些什么来获取我正在寻找的数据吗


谢谢

我最终在PHP中找到了一个使用CURL的工作方法。我根据这个答案改编了代码:

以下是将数据发布到.aspx页面并接收正确响应的一些工作代码:

$p = 1; //page number to get

$postdata = http_build_query(
    array(
        '__EVENTTARGET' => '',
        '__EVENTARGUMENT' => '',
        '__VIEWSTATE' => 'your_event_state_value',
        '__EVENTVALIDATION' => 'your_event_validation_value',
        'ctl00$Contenido$GoPag' => $p
    )
);

$url = 'http://www.borsabcn.es/esp/aspx/Empresas/Empresas.aspx';

// Initialise cURL
$ch = curl_init($url);

// Set options (post request, return body from exec)
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

// Do the request
$result = curl_exec($ch);

//show/check the result
echo $result;
在上面的示例中,我删除了
\uuu VIEWSTATE
\uu EVENTVALIDATION
变量的值,但是您可以通过在浏览器中调查该页面的HTML来找到这些值