Javascript PHP在POST后从aspnet表单获取文件内容
我试图从以下网站获取信息: 正如你所看到的,这个网站列出了巴塞罗那证券交易所的公司。但它只按字母顺序列出第一页。我正在使用PHP自动从所有页面获取信息。例如,如果你点击顶部的链接,上面写着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
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来找到这些值