如何通过需要POST数据的PHP抓取网站?

如何通过需要POST数据的PHP抓取网站?,php,post,curl,scrape,Php,Post,Curl,Scrape,我正在尝试抓取一个网站,该网站接收POST数据以返回正确的页面(无POST它返回15个结果,有POST数据它返回所有结果) 目前我的代码如下所示: $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,"http://www.thisismyurl.com/awesome"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, XXXXXX)

我正在尝试抓取一个网站,该网站接收POST数据以返回正确的页面(无POST它返回15个结果,有POST数据它返回所有结果)

目前我的代码如下所示:

$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,"http://www.thisismyurl.com/awesome");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, XXXXXX);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result= curl_exec($curl);
我知道我需要将我的postfields放入充满“XXXXXX”的空间中,我只是不知道从哪里挖掘post字段/值,以及如何将它们构造到我传递到其中的变量中


任何帮助都将不胜感激

如果它是一个简单的表单,那么只需提取所有表单字段并在脚本中复制它们即可。如果是某种动态形式,比如javascript构建请求和使用ajax,那么您可以使用开发工具(例如Firefox的Firebug Net选项卡、HTTPfox等)嗅探数据,并在发送后提取post数据


无论哪种方式,一旦您知道发送的是哪些字段/数据,其余字段/数据应该(相对而言)易于复制/构建。

我认为可能有人会寻找代码来取代XXXXXX。我使用下面的代码

$ch = curl_init();
$timeout=5;
$name=$_REQUEST['name'];
$pass=$_REQUEST['pass'];
$data = array('username' => '$name', 'password' => '$pass');
$data=http_build_query($data);
curl_setopt($ch,CURLOPT_URL,"superawsomesite.com"); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);

这就是他们制作SEO URL的原因,因为搜索引擎不会索引需要post/get数据才能获取页面的页面。您需要考虑各种可能的值组合以获得正确的页面,或者在抓取时获得大量404。你为什么要用POST?如果您正在尝试搜索页面,请尝试GET。Hazaa!在几次失败的尝试后,它似乎起了作用。谢谢工作完美。这应该是公认的答案。