【问题标题】:PHP Crawler for submit a from on an external site and get resultPHP Crawler 用于从外部站点提交并获取结果
【发布时间】:2013-04-16 10:13:26
【问题描述】:

对于我正在开发的系统,我需要以编程方式转到特定页面。在表单中填写一个字段(我知道输入元素的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;

【问题讨论】:

  • 哇!,看起来很酷,就像Crawler / Spammer 或其他什么的。我相信您需要将$urltopost 更改为表单发送其REQUEST 的位置而不是表单。并从form 获取所有字段并将其发送到action=www.example.com
  • @Rafee 听起来不错,但表单会重定向到同一页面
  • extract($_POST) 有什么用处?
  • 尝试使用 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0) > CURLOPT_FOLLOWLOCATION 为 true,此选项遵循重定向,可能会有所帮助

标签: php html forms web-crawler


【解决方案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 中提取数据”)。

【讨论】:

  • $returndata 应该是表单返回的内容,有没有办法绕过 JS 重定向?
  • 表格可能返回一些HTML。你能给我们看看吗?在我们真正知道是否有任何 JS 之前,为可能的 JS 寻找解决方法可能没有意义。
  • 1) 我不知道要填什么,所以无法得到结果。 2) 表单提交至/web/start.swe。你的代码中没有这个。
  • 只是第一个字段,许可证号是我要输入的内容。尝试输入:0130016825566667
猜你喜欢
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多