PHP Crawler用于在外部站点上提交from并获得结果

时间:2013-04-16 10:13:26

标签: php html forms web-crawler

对于我正在开发的系统,我需要以编程方式转到特定页面。在表单中填写一个字段(我知道输入元素的id和名称),提交并存储结果。

我确实有权从网站上获取信息。

我遇到的问题是,我认为该脚本有效,但由于外部表单的“操作”重定向到同一页面,并将结果显示在表格中,它只是尝试将我的个人网页重定向到同一目录,当然我的服务器上不存在。

任何帮助都表示赞赏,这是迄今为止我所拥有的:

//extract data from the post
extract($_POST);

//set POST variables

//URL IS SET, I HAVE JUST TOOK IT OUT OF THIS CODE SNIPPET
$urltopost = 'blahblah.com';

$datatopost = array ( 
's_3_2_5_0' => 0130016825566667, 'SWEFo' => 'SWEForm3_0',  'SWEField' => 's_3_1_0_0', 'SWENeedContext' => 'true',
'W' => 't', 'SWECmd' => 'InvokeMethod', 'SWEMethod' => 'SearchForLicence', 'SWESP' => 'false', 'SWEDIC' => 'false',
'SWEReqRowId' => '0','SWEView' => 'LDL+Licence+Query+View','SWEC' => '3','SWEBID' => '1363349905','SWEGHOTO' => 'true',
'SWETS' => '1363349913267', 'SWEApplet' => 'LDL+Query+Licences');

$ch = curl_init ($urltopost);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $datatopost);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$returndata = curl_exec ($ch);

echo $returndata;

1 个答案:

答案 0 :(得分:1)

表单返回带有执行重定向的JavaScript的HTML。

window.location.replace("/web/start.swe?SWECmd=GotoView&SWEView=LDL+Asset+Query‌​+Results+View&SWERF=1");

您需要在输出之前从$ returndata中删除它。无论如何,HTML中还有许多其他相对URL,例如图像的URL。

您最好从结果中提取数据并生成自己的HTML页面(搜索“使用PHP从HTML中提取数据”)。